网上很多做VPS推介的网站都会提醒用户注意备份网站数据,而linux vps备份的方法都是用脚本定时自动化备份,其中有一个自动化备份并上传至ftp服务器的脚本有点问题(手动执行脚本本地可以产生备份数据压缩包并上传到ftp服务器,但是放到crontab里自动化执行则只有本地可以产生备份数据压缩包却没有上传到ftp服务器),我改了下脚本,适用于使用lnmp环境下定时自动备份网站和mysql数据库并上传至FTP:
- #!/bin/bash
- MYSQL_USER=root
- MYSQL_PASS=root
- FTP_USER=ftp
- FTP_PASS=123456
- FTP_IP=www.is36.com
- FTP_backup=/public_html/
- WEB_DATA=/home/wwwroot/
- DataBakName=Data_$(date +"%Y%m%d").tar.gz
- WebBakName=Web_$(date +%Y%m%d).tar.gz
- OldData=Data_$(date -d -5day +"%Y%m%d").tar.gz
- OldWeb=Web_$(date -d -5day +"%Y%m%d").tar.gz
- rm -rf /home/backup/Data_$(date -d -3day +"%Y%m%d").tar.gz /home/backup/Web_$(date -d -3day +"%Y%m%d").tar.gz
- cd /home/backup
- for db in `/usr/local/mysql/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do
- (/usr/local/mysql/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 - > ${db}.sql.gz)
- done
- tar zcfP /home/backup/$DataBakName /home/backup/*.sql.gz
- rm -rf /home/backup/*.sql.gz
- tar zcfP /home/backup/$WebBakName $WEB_DATA
- ftp -i -n << !
- open $FTP_IP
- user $FTP_USER $FTP_PASS
- bin
- lcd /home/backup/
- cd $FTP_backup
- delete $OldData
- delete $OldWeb
- put $DataBakName
- put $WebBakName
- bye