Linux系統中自動備份指令碼

來源:互聯網
上載者:User

要求:將/data目錄下的所有檔案cp到/var/backups目錄下,檔案以當天的日期命名。例如(/var/backups/data.20151103)。並且判斷前一天的目錄中的檔案與當天的區別,如果無區別,則刪除前一天的備份目錄。


# cat auto_bak.sh
#!/bin/bash
 
bak_from_name="data"
bak_from_dir="/data"
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 ];then
mkdir $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 ];then
echo "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列表檔案中未變化和變化部分的條目值是否相同,來判斷所要備份目錄中的檔案是否有發生變化,以此來決定是否刪除前一天的備份。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.