功能:備份指定目錄的文件並用tar.bz2壓縮,先備份到本地,然後自動上傳到指定的ftp伺服器,備份日誌email到指定的郵箱
借鑒了網上查找的一些範例,現在記不起來是什麼地方,在此謝謝
# cat maildata_backup_ftp
#!/bin/sh
#Postfix mail server autobackup shell
#Writed by ruochen0926@hotmail.com QQ:967409
#Env
sourcedir=/opt/maildata/
backupdir=/home/mail-backup/
fileprefix=maildata
newfile=$fileprefix-`date +%F`.tar.bz2
logfile=/tmp/mail_backup.log
logtmp=/tmp/mail_backup.tmp
#Ftp 0 is disable,1 is enable
copytoftp=1
ftpserver=10.1.1.8
ftpuser=admin
ftppasswd=admin
#mail 0 is diable,1 is enable
mailenable=1
mailaddress=ruochen0926@hotmail.com
#mail backup keep days
keepdays=16
#Backup script
echo "Start====================================>">$logfile
echo "Beginning Backup `date '+%F %T'`">>$logfile
if [ -f $backupdir$newfile ]
then
echo "$newfile backup exist, backup stop ..." >>$logfile
else
tar -cjf $backupdir$newfile $sourcedir
echo "$backupdir$newfile Backup Success!" >>$logfile
echo "End Backup `date '+%F %T'`">>$logfile
fi
echo "Delete $keepdays days ago files ..." >>$logfile
find $backupdir -name $fileprefix* -mtime +$keepdays -fls $logtmp -exec rm {} \;
echo "Deleted Backup file is :">>$logfile
cat $logtmp >>$logfile
echo "Delete old file Success!" >>$logfile
if [ $copytoftp = 1 ]; then
if [ -z $ftpserver ];then
echo "Ftp Server not set,Copy to Ftp Failed ..." >>$logfile
exit 1
elif [ -z $ftpuser ];then
echo "Ftp user not set, Copy to Ftp Failed ..." >>$logfile
exit 2
elif [ -z $ftppasswd ]; then
echo "Ftp password not set, Copy to Ftp Failed ..." >>$logfile
exit 3
else
echo "Start copy to Ftp server ...." >> $logfile
ftp -n<<eof
open $ftpserver
user $ftpuser $ftppasswd
bin
cd mail_backup
cd maildata
lcd $backupdir
mput $newfile
y
bye
eof
fi
fi
echo "$newfile Upload Ftp Successful">>$logfile
echo "End=======================================|">>$logfile
if [ $mailenable=1 ];
then
mail -s "Mail Server Data Backup Status" $mailaddress<$logfile
fi
[火星人 ] 分享mail伺服器的數據備份腳本已經有353次圍觀