`
lgh06
  • 浏览: 54591 次
文章分类
社区版块
存档分类
最新评论

Linux下利用七牛云和crontab实现定时自动备份

 
阅读更多

工具:qrsync七牛云存储qrsync

linux自带crontab定时任务

mysql自带mysqldump

系统自带压缩工具


然后参考以下两篇文章:

简介

qrsync 是一个根据七牛云存储API实现的简易命令行辅助上传同步工具,支持断点续上传,增量同步,它可将用户本地的某目录的文件同步到七牛云存储中,同步或上传几百GB甚至上TB的文件毫无鸭梨。

注意:被同步的文件名和路径必须是utf8编码,非utf8的文件名和路径将会同步失败

下载

qrsync 命令行辅助同步工具下载地址:

用法

先建立一个配置文件,比如叫 conf.json,内容大体如下:

{
    "access_key": "Please apply your access key here",
    "secret_key": "Dont send your secret key to anyone",
    "bucket": "Bucket name on qiniu resource storage",
    "sync_dir": "Local directory to upload",
    "async_ops": "fop1;fop2;fopN",
    "debug_level": 1
}

配置文件语法可以参考JSON

其中,access_keysecret_key在七牛云存储平台上申请。步骤如下:

  1. 开通七牛开发者帐号
  2. 登录七牛开发者自助平台,查看 Access Key 和 Secret Key

bucket是你在七牛云存储上希望保存数据的 Bucket 名(类似于数据库的表),这个自己选择一个合适的就可以,要求是只能由字母、数字、下划线等组成。

sync_dir是本地需要上传的目录,绝对路径完整表示。这个目录中的所有内容会被同步到指定的bucket上。注意:Windows 平台上路径的表示格式为:盘符:/目录,比如 E 盘下的目录 data 表示为:e:/data

async_ops是设置上传预转参数,一般上传的音视频如果需要转码,可以使用该参数。详情参考:音视频上传预转 - asyncOps

可以在七牛云存储开发者网站后台进行相应的域名绑定操作,域名绑定成功后,若您将 bucket 设为公用(public)属性,则可以用如下方式对上传的文件进行访问:

http://<绑定域名>/<key>

key即是sync_dir里边文件名或文件的相对路径,key可以包含斜杠但不能以斜杠开头。比如sync_dir存在文件a.txta/b/c.txt,且绑定的域名为foo.qiniudn.com,那么即可用如下路径访问:

http://foo.qiniudn.com/a.txt
http://foo.qiniudn.com/a/b/c.txt

在建立完 conf.json 配置文件后,就可以运行 qrsync 程序进行同步。

Unix/Linux/MacOS 系统可以用如下命令行:

$ qrsync /path/to/your-conf.json

以上命令会将sync_dir目录中所有的文件包括软链接全部同步到 conf.json 配置文件指定的bucket中。也可以通过加上-skipsym选项来忽略软链接。

$ qrsync -skipsym /path/to/your-conf.json

Windows 系统用户在 [开始] 菜单栏选择 [运行] 输入cmd回车即可打开 DOS 命令行窗口,然后切换到 qrsync.exe 的所在磁盘路径。假设你的 qrsync.exe 存放在d:/tools/qrsync.exe,那么如下几行命令可以切换到 qrsync.exe 存放的目录:

> d:
> cd tools

进入到 qrsync.exe 所在目录后运行如下命令即可:

> qrsync.exe /path/to/your-conf.json

需要注意的是,qrsync 是增量同步的,如果你上一次同步成功后修改了部分文件,那么再次运行 qrsync 时只同步新增的和被修改的文件。当然,如果上一次同步过程出错了,也可以重新运行 qrsync 程序继续同步。

==============================================================================

CentOS下自动备份网站和数据库的脚本

接触CentOS已经有几个月的时间了,使用了太久的windows在刚接触linux命令行界面的时候还真有点不太适应,但到最后也就应了大家的那句话,跟linux接触的时候越长,就越为她的简洁高效而折服,我手上有一台服务器安装的操作系统是CentOS5.4,上面部署的有网站和数据库应用,基本构架:centos+nginx+mysql+php,但由于网站数据比较多,自己手动备份的话太费时间,所以就打算做一个自动运行的脚本,帮助我在每周的指定时间备份网站内容和数据库内容,用tar打包,然后再传到我另外一个ftp服务器上,整个备份过程就完成了。

  假定这台服务器的网站目录为:/home/www,数据库程序路径为:/usr/local/mysql/bin,数据库名为:levil,ftp服务器为:ftphost,下面先来看完整的自动备份脚本(自动备份脚本保存位置为:/home/backup.sh):

  #!/bin/bash

  cd /home

  WebBakName=web_$(date +%y%m%d).tar.gz

  tar zcvf $WebBakName www

  SqlBakName=sql_$(date +%y%m%d).tar.gz

  /usr/local/mysql/bin/mysqldump -uusername -ppassword levil>backup.sql

  tar zcvf $SqlBakName backup.sql

  ftp -nv ftphost << EOF

  user ftpname ftppass

  put $WebBakName

  put $SqlBakName

  quit

  EOF

  rm -f backup.sql $WebBakName $SqlBakName

  下面来给大家一一讲解:首先进入/home目录,定义WebBakName变量为网站备份的文件名,文件名格式为web_日期.tar.gz,定义SqlBakName变量为数据库备份的文件名,文件名格式为sql_日期.tar.gz,把整个网站目录www打包到WebBakName文件名中,使用mysqldump导出指定数据库内容到backup.sql,然后把数据库备份打包到SqlBakName文件中,本机备份工作至此结束,如果你没有足够大的远程ftp空间的话,可以直接把备份文件下载到本机,但我还是建议直接备份到另外一个服务器上的ftp空间中,做到完全自动化备份,这时你需要把脚本中的ftphost、ftpname和ftppass分别替换成你的ftp信息,整个备份过程就完成了。

  接着输入chmod +x backup.sh给脚本添加执行权限,再输入:crontab -e编辑任务自动开始时间,比如我输入:

  00 05 * * 1 /home/backup.sh 就代表每周1的上午5点整执行该自动备份操作。

  在这一切完成之后,你可以先把自动任务时间改为当前的接近时间,看自动备份脚本是否工作正常,测试OK的话以后就不用担心这台服务器出现任何问题导致数据丢失了,当然如果你的数据更新比较频繁的话,建议把自动备份时间调整为每日。




思路:

用crontab定时备份文件和数据库。在之后的时间,比如二十分钟之后,用crontab执行七牛qrsync上传文件。

具体还未测试。

留文记念。


版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics