2013年10月21日 星期一

Linux 【Centos】利用Shell scripts 自動備份phpMyAdmin到ftp上

shell script (程式化腳本)類似Windows(Dos)上的批次檔(.bat),

可將一連串欲執行的指令寫成一個檔案,

最後再利用crontab排程,就能夠每個固定時間自動備份了

1.在home目錄上新增一個腳本檔
vi /home/backup.sh

2.輸入下列文字
#bckup databas to ftp site
# your ftp address and folder address
ftp_addr='ftpip1'
ftp_addr2='ftpip2'
# ftp account and password
account='ftpaccount1'
acc_pw='ftpaccount2'
account2='ftppassword1'
acc_pw2='ftppassword2'

# to backup mysql dbase ,account and password
db='dbname'
dbuser='dbuser'
dbpassword='dppassword'

# get year,month,day,hour
da=$(date +%Y%m%d%H%M)
h="pig_ios_"
filename="$h$da"_"$db".sql
echo $filename
# use mysqldump dump $db data to sql file
echo "mysqldump $db -u $dbuser -p$dbpassword --opt > /home/$filename" | sh
# use bzip2 compress sql file
echo "bzip2 /home/$filename" | sh
cd /home

# upload file to ftp server

ftp -n $ftp_addr <<END_SCRIPT
quote USER $account
quote PASS $acc_pw
put $filename.bz2
quit
END_SCRIPT

ftp -n $ftp_addr2 <<END_SCRIPT
quote USER $account2
quote PASS $acc_pw2
put $filename.bz2
quit
END_SCRIPT

exit 0

# erase file
echo "rm -rf $filename.bz2" |sh

3.執行看腳本是否正常運作
sh /home/backup.sh

4.最後再加入crontab排程
vi /etc/crontab
加入這行:
0  5  *  *  * root /home/backup.sh
重新啟動crontab
crontab /etc/crontab

沒有留言:

張貼留言