Linux自动备份脚本
生活随笔
收集整理的這篇文章主要介紹了
Linux自动备份脚本
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? ? ?今天網上一個朋友問了我一個shell的題目,讓我幫他做下。下面是題目以及解題思路。
題目:
寫作一個備份/etc目錄的腳本,要求:將/etc目錄下的所有文件cp到/var/backups目錄下的以當天的日期命名的目錄中例如(/var/backups/etc.20140809)。并且判斷前一天的目錄中的文件與當天的區別,如果無區別,則刪除前一天的備份目錄。解答:
[root@nolinux?scripts]#?cat?auto_bak.sh? #!/bin/bash # #?This?script?is?used?to?automatically?backup?the?specified?directory,?and?judgment,?and?whether?the?previous?backup? #?Written?by?sunsky #?Mail?:?274546888@qq.com #?Date?:?2014-8-16?23:00:00 # bak_from_name="etc" bak_from_dir="/etc" bak_to_dir_par="/var/backups" bak_dir="${bak_to_dir_par}${bak_from_dir}.$(date?+%Y%m%d)" yes_bak_dir="${bak_to_dir_par}${bak_from_dir}.$(date?-d?'-1?day'?+%Y%m%d)" new_sum_file="${bak_to_dir_par}/new_sum.$bak_from_name.$(date?+%Y%m%d)" old_sum_file="${bak_to_dir_par}/old_sum.$bak_from_name.md5"if?[?!?-d?$bak_to_dir_par?];thenmkdir?$bak_to_dir_par fi find?$bak_from_dir?|xargs?-I?{}?md5sum?{}?>>?$new_sum_file?2>/dev/null cp?-a?$bak_from_dir?$bak_dir?&&?echo?"$bak_from_dir?directory?to?$bak_dir?directory?backup?successfully"new_sum_error=`md5sum?-c?$new_sum_file?2>/dev/null|awk?'$2!~"OK"'|wc?-l` new_sum_ok=`md5sum?-c?$new_sum_file?2>/dev/null|awk?'$2~"OK"'|wc?-l` old_sum_error=`md5sum?-c?$old_sum_file?2>/dev/null|awk?'$2!~"OK"'|wc?-l` old_sum_ok=`md5sum?-c?$old_sum_file?2>/dev/null|awk?'$2~"OK"'|wc?-l`if?[?$new_sum_error?==?$old_sum_error?-a?$new_sum_ok?==?$old_sum_ok?];thenecho?"Because?today?and?yesterday's?content?is?the?same,?delete?the?backup?content?of?yesterday"rm?-rf?$yes_bak_dir?$new_sum_file fi echo?|?cp?$new_sum_file?$old_sum_file?&>/dev/null針對以上腳本的簡單描述:
? ? ? ?本腳本將所有涉及到的目錄都聲明了變量,這樣子就方便腳本功能的靈活收縮。無論是變更所要備份的目錄項還是變更備份到的目錄項都很另外。由于題目要求不采用打包的方式備份,因此本腳本不涉及對腳本的打包管理。
bak_from_name變量為所要備份的目錄名 bak_from_dir變量為所要備份的目錄路徑 bak_to_dir_par變量為所要備份到的目錄的父(上級)目錄路徑 bak_dir變量為所要備份到的目錄路徑 yes_bak_dir變量為所要備份目錄前一天的備份目錄路徑 new_sum_file變量為當天所計算出來的所要備份目錄的MD5列表 old_sum_file變量為當天所計算出來的所要備份目錄的MD5列表(此變量的當天是腳本執行之后的當前,在腳本才開始執行的時候,該變量所指定的文件為前一天備份目錄的MD5列表) new_sum_error變量為當天所要備份目錄的MD5發生變化的條目總數 new_sum_ok變量為當天所要備份目錄的MD5未發生變化的條目總數 old_sum_error變量為前一天所要備份目錄的MD5發生變化的條目總數 old_sum_ok變量為前一天所要備份目錄的MD5未發生變化的條目總數? ? ? ?該腳本前一段主要是搜尋所要備份目錄的每一個文件的md5值,然后記錄到當天的所要備份目錄的MD5列表文件中,然后執行備份。
? ? ? ?該腳本后一段(執行備份之后的部分)主要是根據比對當天的所要備份目錄的MD5列表文件和前一天的所要備份目錄的MD5列表文件中未變化和變化部分的條目值是否相同,來判斷所要備份目錄中的文件是否有發生變化,以此來決定是否刪除前一天的備份。
OK!本文到此結束,希望能對51博友有所幫助!
總結
以上是生活随笔為你收集整理的Linux自动备份脚本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java编码安全规范
- 下一篇: Andoid 采用ListView三种显