需求:自动备份网站数据文件到七牛

    os      : CentOS release 6.5 (Final)
    website : /opt/website
    MySQL   : /opt/mysql
    backup  : /opt/backup
    qshell  : /opt/qshell

备份网站文件

vim /opt/website.sh

#!/bin/sh
# tar /opt/website to /opt/backup/website

mkdir -p /opt/backup/website
t=`date +"%Y%m%d_%H%M%s"`
tar -zcvf /opt/backup/website/$t.tar.gz /opt/website

chmod u+x website.sh

备份MySQL文件

vim /opt/mysql.sh

#!/bin/bash

# use mysqldump backup mysql to /opt/backup/mysql

mkdir -p /opt/backup/mysql
t=`date +%Y%m%d_%H%M%S`
/opt/mysql/bin/mysqldump -P port -u userName -ppassword database > /opt/backup/mysql/$t.sql

port是MySQL端口,默认3306,userName是MySQL用户名,password是密码,database是要备份的数据库
因为密码是直接明文写在脚本中的,执行的时候会提示Using a password on the command line interface can be insecure.

chmod u+x mysql.sh

上传到七牛

qshell说明文档 : https://developer.qiniu.com/kodo/tools/1302/qshell
dircache说明文档:https://github.com/qiniu/qshell/blob/master/docs/dircache.md
qupload说明文档 :https://github.com/qiniu/qshell/blob/master/docs/qupload.md

  • 注册 七牛 账号并登录
  • 个人中心->密钥管理,创建密钥(AccessKey/SecretKey)
  • 选择自己的平台下载qshell并重命名为qshell,此处下载linux x64:
    wget https://dn-devtools.qbox.me/2.1.5/qshell-linux-x64
  • 设置密钥: ./qshell account AccessKeyValus SecretKeyValues
  • 生成要上传文件的列表upload.list.txt:vim /opt/qshell/cache.sh
    #!/bin/bash

    # auto create dircache upload.list.txt

    /opt/qshell/qshell dircache /opt/backup /opt/qshell/upload.list.txt
  • chmod u+x cache.sh
  • 配置qupload的支持文件: vim /opt/qshell/upload.conf
    {
      "src_dir" : "/opt/backup",
      "bucket" : "xxx",
      "log_file": "/opt/qshell/upload.log",
      "file_list": "/opt/qshell/upload.list.txt",
      "rescan_local": true,
      "check_exists": true
}
  • 使用qshell上传:vim /opt/qshell/qsyn.sh
    #!/bin/bash

    # syn /opt/backup/ to qiniu bucket/xxx

    /opt/qshell/qshell qupload /opt/qshell/upload.conf                                                        
  • chmod u+x qsyn.sh

添加定时任务

crontab -e

00 02 * * *  /opt/website.sh
05 02 * * *  /opt/mysql.sh
10 02 * * *  /opt/qshell/cache.sh
15 02 * * *  /opt/qshell/qsyn.sh

系统会在早上2点之后陆续执行上述任务将/opt/backup下的文件上传到七牛空间。

标签: Linux, crontab, 备份, 定时任务

已有 3 条评论

  1. zhangsansan zhangsansan

    tar -zcf /opt/backup/website/$t.tar.gz /opt/website >/dev/null 2>&1
    tar -jcf /opt/backup/website/$t.tar.bz2 /opt/website >/dev/null 2>&1

    00 02 * * * /bin/bash -l -c /opt/website.sh

    1. zhangsansan zhangsansan

      1.理论上tar进行压缩‘/’开头的目录时,应该会报一个错误的,虽然不影响压缩后的内容。解压的时候也需要注意,会自动生成/opt/website的目录,如果没有权限估计会出现解压失败的问题。
      2.*.tar.gz vs *.tar.bz2,后面这个压缩比高了不少,就是执行压缩时,资源占用大了点。可以考虑下,毕竟七牛的存储应该也是按照存储量计费的吧
      3.习惯上使用/bin/bash -l -c shell_script.sh

      1. 1、压缩"/"开头的会提示自动给去掉"/"了
        2、目前在用tar.bz,测试结果tar.bz和tar.bz2压缩后大小相差无几,但时间上前者更占优势

添加新评论