chaihongjun.me

linux服务器本地及七牛云远程备份

这篇文章可能已经没实际效用,请移步《网站服务器本地及七牛云远程备份

前言:

  本文主要参考张戈博客这篇《linux/vps本地七天循环备份和七牛远程备份教程》完成本地实际测试,此文仅做记录。

  本站与另外一个业务网站在同一阿里云linux服务器上的数据盘,业务网站经常遇到问题需要做回滚操作,因此影响本站的持久运行,因为,为了避免回滚造成的影响,因此本站单独做数据库备份和网站整站文件备份。在服务器本地和七牛远端同时备份,提高可靠性。

执行步骤:

一. 前往七牛注册账户创建新的空间用来存放同步数据。(以下七牛后台操作步骤是在旧版本)

QQ截图20160601153615.jpg

访问控制选择私有空间,防止数据被下载泄漏。使用场景选择默认的通用类型即可。

二.进入七牛的账户设置,选择密钥:

三.选择创建新密钥或者使用已经存在的密钥,建议创建新密钥用来针对备份任务。

四.在服务器上发布本地备份脚本:

#!/bin/bash
#Author:ZhangGe
#Modification by:more
#Des:Backup database and webfile.
#Date:2016-6-1
TODAY=`date +%u`
if [ -z $1 ];then
        echo Needed Usage arguments. Please Use --help to get more infomation.
        exit 1
fi
if [ "$1" == "db" ];then
        domain=$2
        dbname=$3
        mysqluser=$4
        mysqlpd=$5
        back_path=$6
        test -d $back_path || (mkdir -p $back_path || echo "$back_path not found! Please CheckOut Or feedback to zhangge.net..." && exit 2)
        cd $back_path
        mysqldump -u$mysqluser -p$mysqlpd $dbname --skip-lock-tables>$back_path/$domain\_db_$TODAY\.sql
        test -f $back_path/$domain\_db_$TODAY\.sql || (echo "MysqlDump failed! Please CheckOut Or feedback to zhangge.net..." && exit 2)
        zip --version >/dev/null && zip -Pmypassword -m $back_path/$domain\_db_$TODAY\.zip $domain\_db_$TODAY\.sql
elif [ "$1" == "file" ];then
        domain=$2
        site_path=$3
        back_path=$4
        test -d $site_path || (echo "$site_path not found! Please CheckOut Or feedback to zhangge.net..." && exit 2)
        test -d $back_path || (mkdir -p $back_path || echo "$back_path not found! Please CheckOut Or feedback to zhangge.net..." && exit 2)
        test -f $back_path/$domain\_$TODAY\.zip && rm -f $back_path/$domain\_$TODAY\.zip
        cd $site_path && cd ..     
        zip --version >/dev/null && zip -Pmypassword -9r $back_path/$domain\_$TODAY\.zip $domain
elif [ "$1" == "--help" ];then
        clear
        echo =====================================Help infomation=========================================
        echo 1. Use For Backup database:
        echo The \$1 must be \[db\]
        echo \$2: \[domain\]
        echo \$3: \[dbname\]
        echo \$4: \[mysqluser\]
        echo \$5: \[mysqlpassword\]
        echo \$6: \[back_path\]
        echo
        echo For example:./chaihongjun.me_backup.sh db chaihongjun.me chaihongjun.me root root /alidata1/local_backup/chaihongjun.me >/dev/null 2>&1
        echo
        echo 2. Use For Backup webfile:
        echo The \$1 must be [\file\]:
        echo \$2: \[domain\]
        echo \$3: \[site_path\]
        echo \$4: \[back_path\]
        echo
        echo For example:./chaihongjun.me_backup.sh file chaihongjun.me  /alidata1/www/web/chaihongjun.me /alidata1/local_backup/chaihongjun.me >/dev/null 2>&1
        echo =====================================End of Hlep==============================================
        exit 0
else
        echo "Error!Please Usage --help to get help infomation!"
        exit 2
fi

两处的mypassword为默认解压密码,请更改替换"

mypassword

"为自己需要的解压密码,保存以上脚本chaihongjun.me_backup.sh,并赋予执行权限(chmod +x chaihongjun_backup.sh)


具体脚本执行需要的参数可通过执行如下了解:

./chaihongjun.me_backup.sh --help

五.手动执行备份命令(用来测试备份脚本)

  1. 数据库备份:

./chaihongjun.me_backup.sh db chaihongjun.me chaihongjun.me root root /alidata1/local_backup/chaihongjun.me >/dev/null 2>&1

参数说明:

参数1:db,设置备份类型为数据库,若要备份数据库必选db
参数2:domain 要备份数据的网站域名,如chaihongjun.me,用于组成备份之后的压缩包文件名
参数3:dbname 要备份数据的网站的数据库名,如chaihongjun.me 
参数4:mysqluser mysql用户名,用来备份数据用,建议使用root
参数5:mysqlpassword mysql用户的密码
参数6:back_path 数据库备份文件的存放路径

2.网站文件备份:

./chaihongjun.me_backup.sh file chaihongjun.me /alidata1/www/web/chaihongjun.me /alidata1/local_backup/chaihongjun.me >/dev/null 2>&1

参数说明:

参数1:file,设置备份类型为网站文件,若要备份网站必选file
参数2:domain 要备份网站的域名,如chaihongjun.me,用于组成备份之后的压缩包文件名
参数3:site_path 网站文件的存放路径,如/alidata1/www/web/chaihongjun.me
参数4:back_path 网站文件备份文件的存放路径

建议:

为了方便七牛云的同步,建议数据库的备份文件和网站的本地备份文件一起放在同一个目录层级下,
比如本地的备份目录是/alidata1/local_backup,如果有多个网站需要备份,则分别放在以网站域名命名的
目录下,比如chaihongjun.me的备份存放路径是/alidata1/local_backup/chaihongjun.me,
而www.hongzhuangzx.org的份存放路径是/alidata1/local_backup/www.hongzhuangzx.org。

六.建立计划任务自动每天备份,并且每七天周期覆盖旧数据

######      chaihongjun.me database backup
0 2 * * * /root/chaihongjun.me_backup.sh db chaihongjun.me chaihongjun.me root root /alidata1/local_backup/chaihongjun.me >/dev/null 2>&1
######      chaihongjun.me website backup
5 2 * * * /root/chaihongjun.me_backup.sh file chaihongjun.me /alidata1/www/web/chaihongjun.me /alidata1/local_backup/chaihongjun.me >/dev/null 2>&1

至此,以上本地的天循环自动备份完成,下面将完善七牛的7天循环远程备份。

七.七牛远程备份需要的准备工具:

1.linux(仅限64bit)系统七牛同步工具包,其他系统的工具包可以登录七牛下载 

QQ截图20160601161152.jpg

config.sh 是初始化脚本,如果不会使用VI等命令,可以执行此脚本,如果会VI等命令,即可直接编辑qrsync.conf配置文件。将这些文件上传到服务器上,编辑配置qrsync.conf:

{"src":"/alidata1/local_backup","dest":"qiniu:access_key=Your AK&secret_key=Your SK&bucket=bucket_name&threshold=512000","deletable":0,"debug_level":1}
以上
/alidata1/local_backup是本地的备份路径
Your AK:是你七牛账户的密钥Access_key,
Your SK:是你七牛账户的密钥Secret_key,
这里用到之前创建的密钥了。
bucket_name:前面创建的七牛空间名,如chaihongjun

2.添加crontab计划任务,和本地备份一样每天执行同步到七牛云空间

##### Add to QN_backup
30 2 * * * /root/QN_Backup_tools/qrsync /root/QN_Backup_tools/qrsync.conf >/dev/null 2>&1 &
注意到crontab计划任务末端都有 >/dev/null 2>&1,表示脚本执行输出的日志结果全部屏蔽
最后一个crontab在最后还有一个&,表示此条命令在后台运行

至此,七牛云的同步也完成。

还原备份需要注意的问题:

备份执行脚本是root属组,因此备份出来的文件也是root属组,若需要还原,则需要再执行chown还原回原来的属组www。

知识共享许可协议本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。作者:柴宏俊»