新版Linux/vps本地十五天循环备份和七牛远程备份脚本
编辑:狂族晨曦 来源:脚本编程,系统运维,WordPress技巧 日期:2017-08-20 阅读: 3,425 次 2 条评论 » 百度已收录
最新在新建一个博客,新的博客是建在云服务器的,完全自主,不得不说感觉非常好,比起虚拟主机可操作性强太多了。因为可操作性强,所以想把该做的都做好,比如备份。
受张戈博客影响,看到了张戈的同步7天的那篇文章,想照着操作的时候发现,七牛的qrsync工具竟已废弃:
qrsync已废弃
看这简介,推荐使用qshell命令行工具,先森就干脆研究下使用新的工具来同步。有段时间没和七牛云储存打交道了,变化还是挺大的。为七牛的推陈出新点个赞。
一、数据库、网站本地备份脚本
在服务器上编辑shell脚本,脚本代码如下:
#!/bin/bash # Name:liuxxbak.sh # This is a ShellScript For Auto Backup and Delete old Backup # Date:2017-8-19 source /etc/profile backupdir=/web/data/liuxx_bak # 本地备份路径 time=` date +%Y%m%d ` date=` date +"%Y-%m-%d %H:%M:%S" ` day=15 #本地备份保留天数 # 数据库信息 user=root password=****** host=127.0.0.1 port=3306 databases=wordpress # 本地网站根目录 backhome=/web/data/html/ if [ ! -d $backupdir ]; then mkdir $backupdir fi mysqldump -h $host -P $post -u $user -p$password ${data} | gzip > $backupdir/${data}_$time.sql.gz if [ "$?" == 0 ];then echo "[${date}] 数据库 ${data} 备份成功!!" >> ${backupdir}/mysqllog.log else #备份失败则进行以下操作 echo "[${date}] 数据库 ${data} 备份失败!!" >> ${backupdir}/mysqllog.log fi # 备份网站 tar -zcvf $backupdir/liuxx_${time}.tar.gz $backhome > /dev/null 2>&1 # 删除同步 find $backupdir -name "*.gz" -type f -mtime +${day} -exec rm {} \; > /dev/null 2>&1
先森将以上代码保存为‘liuxxbak.sh’,名称可以随意自定义。保存后需要增加可执行权限:
chmod +x liuxxbak.sh
使用说明:
将以上内容变量按需修改:backupdir=本地备份绝对路径
day=本地备份保留天数
user=数据库用户名(建议使用root用户,出错可能性小)
password=数据库密码
host=数据库IP或域名
port=数据库端口
databases=数据库名称
backhome=本地网站根目录
脚本执行方式:
./liuxxbak.sh 或者 /web/data/liuxxbak.sh # 绝对路径执行
如此可以检查一下是否能够成功备份。
二、远程备份到七牛云储存
1.命令。
首先下载qshell命令行工具,下载页面:根据服务器类型选择下载
linux 64位的服务器可以直接在服务器上这样下载并增加可执行权限:
wget -O qshell http://devtools.qiniu.com/2.1.3/qshell-linux-x64 && chmod +x qshell
可以将qshell命令放入自定义目录。或直接放至/usr/bin/路径下,这样就可以任何地方直接输入命令了。
2.鉴权。
有了命令之后,我们需要七牛的鉴权,否则没法使用接下来的命令。
需要鉴权的命令都需要依赖七牛账号下的 AccessKey 和 SecretKey。所以这类命令运行之前,需要使用 account 命令来设置下 AccessKey ,SecretKey 。
鉴权的方式很简单,首先进入七牛的个人中心->密钥管理中,找到AccessKey 和 SecretKey。
然后在服务器中运行一下命令:
/web/data/qshell account ak sk
执行之后,用户的所有信息写入到磁盘$HOME_DIR/.qshell下面。如:root用户执行后,信息会保存在/root/.qshell/account.json文件中。如果你修改了密钥,只需要重新执行以上命令即可,配置信息将被覆盖。
3.同步。
终于到了这一步。qshell命令的命令有很多,同步需要用到的命令是qupload。
qupload是用来将本地目录中的文件同步到七牛空间中的命令。
命令格式:
qshell qupload [<ThreadCount>] <LocalUploadConfig>
ThreadCount:并发上传的协程数量,默认为1,即文件一个个上传,对于大量小文件来说,可以通过提高该参数值来提升同步速度。LocalUploadConfig:数据同步的配置文件,该配置文件里面包含了一些诸如本地同步目录,目标空间名称等信息。
ThreadCount是可以忽略的参数,默认一个文件一个文件的上传,因为是要备份数据库和本地网站文件,文件较少且大,顾保持默认就好。
LocalUploadConfig为配置文件,配置文件中可带的参数共有21个,先森选用了其中的7个。详细的配置介绍请看这里。
先森选用的参数如下,将以下内容保存到文件‘localupload.cnf’:
{ "src_dir" : "/web/data/liuxx_bak", "bucket" : "liuxx-backup", "ignore_dir" : true, "overwrite" : true, "check_exists" : true, "check_hash" : true, "rescan_local" : true }
解释,*为必须项:
"src_dir":"/web/data/liuxx_bak", # 本地备份路径*"bucket":"liuxx-backup", #同步数据的目标空间名称,可以为公开空间或私有空间*
"ignore_dir":true, #远程同步到七牛时,忽略本地路径
"overwrite":true, #覆盖同名文件
"check_exists":true, #上传前检查是否有同名文件
"check_hash":true, #在check_exists设置为true的情况下生效,是否检查本地文件hash和空间文件hash一致
"rescan_local":true, #检测本地新增文件并同步
最后,远程同步到七牛云储存的命令为:
/web/data/qshell qupload /web/data/localupload.cnf
可以执行一下上面的命令,检查是否能够成功同步。
先森同步到七牛云的效果:
同步效果
三、定时备份同步
准备工作已经完毕了,现在所需的就是每天的自动备份及远程备份了。
执行crontab -e添加以下内容:
00 02 * * * /web/data/liuxxbak.sh 30 02 * * * /web/data/qshell qupload /web/data/localupload.cnf >/dev/null 2>&1
凌晨两点执行本地备份,凌晨两点半执行远程备份。
当然,你也可以将qshell命令加到liuxxbak.sh脚本的最后,那么只用添加第一条计划任务就可以了。
四、七牛十五天循环备份
七牛云储存免费的存储空间大小是10G,如果你的七牛云存储空间有点紧急的话,可以继续本操作。
这时候,点击‘生命周期’,添加规则,我们可以设定删除15天前的文件。先森设定的规则如下:
删除15天前的文件
当然,如果七牛云存储的剩余空间很足的话,可以保留更多天,这样可供回退的版本就更多了。
总结
无论是用虚拟主机,还是使用云服务器,有一套备份的机制是很重要的。如果像先森一样,主站使用的是虚拟主机,也有另外的云服务器的话,这套备份方案改改,也可以把自己虚拟主机的数据库一起备份起来嘛。
历史上的今天:
- 2015: 福利~今天七夕,移动820M流量免费领取(0)
转载请注明出处来自https://www.capjsj.cn/linux_qiniu_backup.html
博客真是个好地方!
回去慢慢的看,哈哈,感谢博主的分享