【备份脚本】利用七牛qshell备份网站数据

1. 备份文件

首先我们创建一个文件夹用于存放备份文件

mkdir /var/test/backup
mkdir /var/test/backup/files
mkdir /var/test/backup/archives

其中files用于存放源文件,archives用于存放打包后的文件

将需要备份的文件夹复制到备份文件夹并打包

cp /var/test/tobackup/tobackup.file /var/test/backup/files/backup.file
tar zcvf /var/test/backup/archives/backup.`date +%Y%m%d`.tar.gz /var/test/backup/files/ 
# 压缩后的文件名为backup.YYYYmmdd.tar.gz,如backup.20161006.tar.gz

2. 将备份文件上传至七牛云

创建配置文件

将以下内容保存为backup2qiniu.txt,放在/var/test/backup/下

{
   "src_dir"            :   "/var/test/backup/archives",
   "access_key"         :   "<Your AccessKey>",
   "secret_key"         :   "<Your SecretKey>",
   "bucket"             :   "<Bucket>",
   "zone"               :   "<Zone>",
   "rescan_local"       :   true,
   "skip_path_prefixes" :   ".qshell"
}

备份

/var/test/qiniu/qshell qupload 100 /var/test/backup/backup2qiniu.txt

其中100为并发上传的协程数量,可按实际情况修改

3. 利用crontab定期备份

在前面我们已经将备份文件上传到了七牛云存储,我们可以利用crontab定期执行以上命令行,达到定期备份的目的。为了方便,我们创建一个sh文件,也放在/var/test/backup/下,命名为back.sh

创建.sh文件

#!/bin/sh

# 备份数据库
$ cat /usr/bin/backup_db
mysqldump -h 127.0.0.1 -u root -pxxxx --database weixin  | gzip > /home/qshell/mysql/weixin.sql.gz
mysqldump -h 127.0.0.1 -u root -pxxxx --database wordpress  | gzip > /home/qshell/mysql/wordpress.sql.gz

#复制文件
cp /var/test/tobackup/tobackup.file /var/test/backup/files/backup.file

#打包文件夹
cd /var/test/backup
tar zcvf archives/backup.`date +%Y%m%d`.tar.gz files/ 

#上传至七牛云
/var/test/qiniu/qshell qupload 100 /var/test/backup/backup2qiniu.txt

赋权

chmod +x /var/test/backup/backup.sh

加入crontab

运行crontab -e编辑crontab文件

crontab -e
# 每天早上3点半运行.sh文件备份文档
30 3 * * * /var/test/backup/backup.sh

定期删除备份文件

sh文件如下,不再细述。

#!/bin/sh

#删除三个月前的七牛备份
QNFP="backup".`date -d '3 month ago' +%Y%m`
/var/test/qiniu/qshell listbucket <bucket>  $QNFP /var/test/backup/qn.delete.txt
/var/test/qiniu/qshell -f batchdelete <bucket> /var/test/backup/qn.delete.txt

#删除一个月前的本地文件
find /var/test/backup/archives/ -mtime +30 -name "*.tar.gz" -exec rm -rf {} \;