成航先森 成航先森

成都航院计算机系一个学生的个人博客

 

脚本编程

  • 没有分类目录

最新文章

脚本编程
当前位置: 首页 » 脚本编程 » 新版Linux/vps本地十五天循环备份和七牛远程备份脚本

新版Linux/vps本地十五天循环备份和七牛远程备份脚本

编辑:狂族晨曦 来源:脚本编程系统运维WordPress技巧 日期:2017-08-20 阅读: 3,203 次 2 条评论 » 百度已收录

最后更新时间:2022-04-02

最新在新建一个博客,新的博客是建在云服务器的,完全自主,不得不说感觉非常好,比起虚拟主机可操作性强太多了。因为可操作性强,所以想把该做的都做好,比如备份。

受张戈博客影响,看到了张戈的同步7天的那篇文章,想照着操作的时候发现,七牛的qrsync工具竟已废弃:

qrsync已废弃 -1

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.鉴权。

有了命令之后,我们需要七牛的鉴权,否则没法使用接下来的命令。

需要鉴权的命令都需要依赖七牛账号下的 AccessKeySecretKey。所以这类命令运行之前,需要使用 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

可以执行一下上面的命令,检查是否能够成功同步。

先森同步到七牛云的效果:

同步效果 -2

同步效果

三、定时备份同步

准备工作已经完毕了,现在所需的就是每天的自动备份及远程备份了。

执行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天前的文件 -3

删除15天前的文件

当然,如果七牛云存储的剩余空间很足的话,可以保留更多天,这样可供回退的版本就更多了。

总结

无论是用虚拟主机,还是使用云服务器,有一套备份的机制是很重要的。如果像先森一样,主站使用的是虚拟主机,也有另外的云服务器的话,这套备份方案改改,也可以把自己虚拟主机的数据库一起备份起来嘛。

历史上的今天:

标签:
除特别注明外,本站所有文章均为成航先森 www.capjsj.cn 原创,本文共3584个字
转载请注明出处来自https://www.capjsj.cn/linux_qiniu_backup.html
已有 2 位"计工"发布了激烈的评论,还有N多人围观笑而不语评论
的头像
欢迎发表评论
取消评论

表情
疑问调皮伤心抠鼻黑线微笑可爱奸笑震惊吓到了撇嘴大兵忍不住笑笑狂骂狂怒噢?鼓掌酷⊙﹏⊙b汗鄙视大哭嘿嘿

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. 的头像

    博客真是个好地方!

    2017-08-22 14:37 回复
  2. 的头像

    回去慢慢的看,哈哈,感谢博主的分享

    2017-08-22 18:19 回复
官方微信
发表评论 返回顶部