工具: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_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已经有几个月的时间了,使用了太久的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上传文件。
具体还未测试。
留文记念。
版权声明:本文为博主原创文章,未经博主允许不得转载。