備份數據(文件)腳本

LINUX系統運維技術交流羣:4930609

腳本需求:

        對192.168.0.100中的/data/ftp_home/iread目錄下的數據,
常態化保留3天原始數據,每天凌晨2點執行腳本,
當前的日期減去3後的日期對應的文件打包,
並rsync同步到192.168.0.111上去,傳輸成功後,刪除壓縮包。
(比如7月31日凌晨兩點執行腳本,將7月28日的數據[即名稱爲1002.20120728*的文件] 壓縮,並傳輸到31上去,傳輸成功,刪除壓縮包)。
至於刪除源文件的時間節點,先開發成將源文件重命名,屏蔽,運行幾天確認沒有問題後,然後 再修改爲自動刪除。
 

#/bin/bash
#常態化保留3天原始數據,每天凌晨2點執行腳本並上傳到備份服務器上

######需要備份的時間日期######
BAKDATE=`date +%m%d --date='-3 days'`

######需要備份文件的路徑######
BAKFILEDIR="/data/ftp_home/iread/"

######查看三天前的文件######
######在我係統裏輸入ls -lrt 輸出格式如下######
######-rw-r--r--. 1 root root 71881  7月 29 10:48 install.log######
######此處根據自己系統的類型來進行過濾awk -F月 '{ print $1$2,$3 }'的月因爲我的系統顯示的是中文的,######
######有的系統是“Jul”所以根據自己的系統進行調整最後顯示出來格式是“月日 文件名稱” 例如本系統“729 install.log”######
BAKFILE=`ls -lrt $BAKFILEDIR  |awk '{ print $6$7,$9}' |awk -F月 '{ print $1$2,$3 }'| grep $BAKDATE | awk {'print $2'}`

######備份文件名稱#####
BAKNAME=`date +%Y%m%d --date='-3 days'`

######備份路徑######
BAKDIR="/bak"

######判斷備份路徑是否存在如果不存在責創建該目錄######
if [ ! -d "$BAKDIR" ]; then 
mkdir -p $BAKDIR
fi 

######複製備份文件到備份目錄######
for i in $BAKFILE
do
cd $BAKFILEDIR
cp -rp $i $BAKDIR
done

######進入備份目錄對備份文件打包######

cd $BAKDIR
tar cvf $BAKNAME.tar /bak/* &> /dev/null

######將備份文件打包的上傳到備份的服務器上######
rsync -avzP $BAKEDATE.tar rsync://[email protected]:110/bak  &> /dev/null

######判斷上面傳輸到其他服務器的備份文件是否上傳成功,如果成功責刪除本機備份文件,如不成功責不刪除#####
if [ $? -eq 0 ]
then
echo "文件上傳備份到服務器上已經成功請注意查收!" >> /var/log/bakftpname.log
rm -rf /bak
else
echo "文件上傳備份到服務器上失敗請檢查網絡是否正常!" >> /var/log/bakftpname.log
exit 1
fi
exit 0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章