定时备份网站数据到GitHub的私有库

最近听到许多数据丢失的惨况。那么,如何使用Github备份网站数据(还能看到每次更改、随时回档)?

  1. 在GitHub上创建私有库,例如backups,并git clone到服务器中。

  2. 创建备份脚本auto_backup_halo.sh,并chmod +x auto_backup_halo.sh 赋予执行权限。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #!/bin/sh

    # 导入环境变量
    . /etc/profile

    time=`date +%Y%m%d`

    # 切到本地仓库
    cd /root/backups

    # 复制需要备份的文件夹到仓库
    cp -r /root/.halo/. .halo

    # git提交
    git add .
    git commit -m $time
    git push
  3. 通过crontab -e将备份脚本添加到定时任务中,加入以下内容。

    1
    55 23 * * * /bin/sh /var/auto/auto_backup_halo.sh
  4. 通过service crond restart重启crontab服务。

附录

crontab的文件格式

  • 第1列 分钟 0~59
  • 第2列 小时 0~23(0表示子夜)
  • 第3列 日 1~31
  • 第4列 月 1~12
  • 第5列 星期 0~7(0和7表示星期天)
  • 第6列 要运行的命令

crontab的环境变量问题

crontab总是不会默认从用户profile文件中读取环境变量参数,经常导致在手动执行某个脚本时是成功的,但是到crontab中试图让它定期执行时就是会出错,提示:command not found。三种方法可以解决这个问题,主要是让环境变量在crontab中被定义。

  1. 在shell脚本中但凡涉及文件路径时写全局路径。
  2. shell脚本引入环境变量。
    1
    2
    3
    #!/bin/sh

    . /etc/profile
  3. crontab执行命令中加入环境变量。
    1
    55 23 * * * . /etc/profile;/bin/sh /var/auto/auto_backup_halo.sh

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×