linux下自動備份腳本並上傳到ftp服務器
#!/bin/bash
#設置日誌文件,前提建好了/backup/log目錄
LogFile=/backup/log/`date +"%Y-%m"`.log
#備份源目錄
SourceDir=/cvs
#備份目標
BakDir=/backup
#保存20天過期自動刪除
RetainDay=20
#備份的內容可以寫進project.lst,如cvs目錄下有a,b,c三個目錄,project.lst填寫多少就備份多少,下面是備份的
#具體腳本,其核心是tar打包,並把重要的內容記錄到日誌文件裏
ProjectLst=/backup/project.lst
##################################################
DATE=`date +"%Y-%m-%d"`
echo "backup start at $(date +"%Y-%m-%d %H:%M:%S")" >$LogFile
echo "--------------------------------------------------" >>$LogFile
cd $BakDir
PROJECTLIST=`cat $ProjectLst`
for Project in $PROJECTLIST
do
ProjectData=$SourceDir/$Project
DestDir=$BakDir/$Project
PackFile=$DATE.$Project.tgz
if [ -f $BakDir/$PackFile ]
then
echo "backup file have exist !" >>$LogFile
else
cp -RHpf $ProjectData $DestDir >/dev/null
tar -zcvf $PackFile $Project >/dev/null
echo "backup $Project done into $PackFile" >>$LogFile
rm -rf $Project
fi
done
echo "--------------------------------------------------" >>$LogFile
echo "backup end at $(date +"%Y-%m-%d %H:%M:%S")" >>$LogFile
echo " " >> $LogFile
##################################################
#下面的內容就是把剛纔備份的內容傳到服務器上,前提是你有一個可以訪問到底FTP服務器
#put backup to ftp server
HOST=192.168.110.111
FTP_USERNAME=ftpuser
FTP_PASSWORD=123456
cd $BakDir
echo "start open ftp serverat $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile
echo "--------------------------------------------------" >>$LogFile
/usr/bin/ftp -in <>$LogFile
#最後上傳完畢後再查看本地備份大於20天的自動刪除,這樣就可以實現本地異地雙備份
find $Bakdir -type f -mtime +$RetainDay -name "*.$Project.tgz" -exec rm {} \; >/dev/null
exit 0
#最後我們還可用crontab做個週期性計劃,比如每週一次全備份
#59 23 * * 6 /home/backup.sh
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.