因为A大的关系。导致数据丢失了不少。花了2个晚上写了个脚本备份数据。参考了hostloc上不少前辈的脚本。
为了安全,不使用root作为数据库用户备份数据。用root登录mysql server后,创建一个专门的备份用户 (创建用户名backup密码backup的mysql登录帐号,并且这个帐号的权限只有select和lock权限,即mysqldump备份的时候最低的权限要求)
grant select,lock tables on *.* to 'bakup'@'localhost' identified by 'bakup'; flush privileges ;
ftp空间问题。我使用了godaddy域名赠送的免费10g ftp空间
- 登录godaddy,左上角登录
- 登录后,点击左上角 my account. 或者打开 https://mya.godaddy.com/default.aspx?ci=60016
- 出现一个列表。如下图。选择WEB HOSTING。下面有个free plan 就是赠送的空间路。点申请。大概需要30分钟时间开通
脚本如下:
#!/bin/bash dbname="wordpress zjxhjs" #需要备份的数据库列表,多个数据库用空格分割 dbuser="backup" #备份用户名 dbpass="*******" #备份用户密码 webs="fredzhu.com demo.fredzhu.com" #需要备份的网站列表,多个网站用空格分割 webspath="/home/xxxxx/wwwroot" #网站列表所在的根路径 output="/home/xxxxx/bak/tmp" # 临时备份的目录,备份文件在这里打包压缩。 ftphost="72.167.232.101" #ftp地址 ftpuser="xxxxx" #ftp用户名 ftppass="xxxxx" #ftp密码 ftpbackup=/vps_backup #ftp上备份目录 #-------------------------don't modify follow--------------------- date=$(date '+%Y%m%d%H') tmp_db_output=$output/db tmp_web_output=$output/web log_file=$output/info.log backup_file=backup"_"$date.tar old_backup_file=backup_$(date -d -3day +%Y%m%d%H).tar echo "---------------------Auto Bakup Script-------------------" >> $log_file echo "[$date] clean backup" >> $log_file echo " clean tmp backup" >> $log_file rm -rf $tmp_db_output $tmp_web_output echo " clean old local backup file:$old_backup_file" >> $log_file rm -rf $output/../$old_backup_file echo "[$date]mysql starting bakup" >> $log_file if [ ! -d $tmp_db_output ]; then echo " create db temp path[$tmp_db_output]" >> $log_file mkdir $tmp_db_output fi for i in $dbname do echo " bakup db $i" >> $log_file mysqldump -u$dbuser -p$dbpass -hlocalhost $i|gzip > $tmp_db_output/$i"_"$date.sql.gz done echo "[$date] web starting bakup" >> $log_file if [ ! -d $tmp_web_output ]; then echo " create web temp path[$tmp_web_output]" >> $log_file mkdir $tmp_web_output fi for i in $webs do echo " bakup web $i" >> $log_file tar zcf $tmp_web_output/$i"_"$date.tar.gz -C $webspath $i >> $log_file done echo "[$date] package files" >> $log_file tar cvf $output/$backup_file $output/* >> $log_file echo "[$date] movie local backup" >> $log_file if [ -f $output/$backup_file]; then echo " backupfile already exist,del it" >> $log_file rm -rf $output/$backup_file fi mv $output/$backup_file $output/../ echo "[$date] upload to ftp servier" >> $log_file ftp -v -n $ftphost << END user $ftpuser $ftppass type binay passive on cd $ftpbackup delete $old_backup_file put $output/../$backup_file $ftpbackup/$backup_file bye END
评论关闭。