Linux自动备份mysql数据库到Github(脚本)

起因

之前一直是手动备份网站到GitHub,至于数据库也是手动下载到本地。前段时间一个手抖把网站给删了,自己的服务商镜像居然四个都没有用,开不了机,写信给他们寻求帮助,也是没什么实质性建议。说让我不要过于依赖他们的备份,尽量自己搞备份。还好文章数码只有40多篇,自己前一周又备份,有一些还有印象,就重新搞了一下!今天搞备份想能不能搞一个脚本能自动备份最重要的数据库到GIthub,就找到了方法;

:)


方法

  • 建立一个文件夹(如:/home/BACKUP)并建立好与Github的连接,这个我就不介绍了,直接看链接:GIT使用教程;

  • 备份网站目录到/home/BACKUP,比如我的:

    cp -r /blogger /home/BACKUP

  • 在BACKUP里面建立一个文件夹(如:DB)来存放数据库。

    cd /home/BACKUP && mkdir DB
  • 建立脚本文件(比如:backup.sh),我是把脚本也放在/home/BACKUP下面的;

    vim backup.sh

    内容如下

    #!/bin/bash
    cd /home/BACKUP/DB
    message=$(date +%Y-%m-%d)
    mysqldump -uDBNAME -pDBPASSWORD DBNAME > 'DBNAME.sql'
    mv DBNAME.sql DBNAME"${message}".sql
    git add -A
    git commit -m "${message}"
    git push

    注意替换

    • DBNAME:数据库名字
    • DBPASSWORD:数据库密码
  • 自动执行

    crontab -e
  • 希望是每天的凌晨执行一次备份,并添加到远程仓库,那么添加

    0 0 * * * /bin/sh /home/BACKUP/backup.sh

    对linux的crontab指定的时间只有五个部分

段位 时间
第一段 代表分钟 0—59
第二段 代表小时 0—23
第三段 代表日期 1—31
第四段 代表月份 1—12
第五段 代表星期几,0代表星期日 0—6
  • 查看执定时任务
    crontab -l
  • 如果服务没有启动,那么重新启动定时任务
    centos

    systemctl restart crond

    ubuntu

    /etc/init.d/cron restart

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *