您的位置:首页 > 运维架构 > Linux

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

2014-02-07 18:11 260 查看
工具:qrsync 七牛云存储qrsync 

linux自带crontab定时任务

mysql自带mysqldump 

系统自带压缩工具

然后参考以下两篇文章:


简介

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

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


下载

qrsync 命令行辅助同步工具下载地址:
Mac OS: http://devtools.qiniudn.com/qiniu-devtools-darwin_amd64-current.tar.gz
Linux 64bits: http://devtools.qiniudn.com/qiniu-devtools-linux_amd64-current.tar.gz
Linux 32bits: http://devtools.qiniudn.com/qiniu-devtools-linux_386-current.tar.gz
Windows 32bits: http://devtools.qiniudn.com/qiniu-devtools-windows_386-current.zip
Windows 64bits: http://devtools.qiniudn.com/qiniu-devtools-windows_amd64-current.zip


用法

先建立一个配置文件,比如叫 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_key
 和 
secret_key
 在七牛云存储平台上申请。步骤如下:
开通七牛开发者帐号
登录七牛开发者自助平台,查看 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.txt
 和 
a/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下自动备份网站和数据库的脚本

http://www.3lian.com/edu/2012/11-29/46920.html

接触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上传文件。

具体还未测试。

留文记念。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: