Dropbox 准备

  1. 登录 Dropbox,打开 Apps 页面,点击 Create App 按钮,创建一个 App

    dropbox-app.png

  2. 获取 Access token,点击 Generate 获取备用。

    dropbox-app-token.png

  3. 接着 SSH 登录 VPS 获取最新的 Dropbox Uploader 脚本

    git clone https://github.com/andreafabrizi/Dropbox-Uploader.git
    chmod +x dropbox_uploader.sh
    ./dropbox_uploader.sh info

    根据提示输入 Access token,Dropbox 绑定成功。再次运行 ./dropbox_uploader.sh info 可以看到绑定的 Dropbox 账户信息。

Email 准备

  1. 安装Email组件,以保证数据库文件可以发送到您的邮箱

    apt-get install sendmail mutt

创建备份脚本

  1. 请确保有以下目录,如果没有请执行

    mkdir -p /root/backups/sql
  2. 脚本开始
    vi backup.sh

    #!/bin/bash
    #你要修改的地方从这里开始
    MYSQL_USER= #数据库用户
    MYSQL_PASS= #数据库密码
    MAIL_TO= #发送邮箱
    WEB_DATA=/home/wwwroot #本地网站路径
    DOMAIN= #域名
    #你要修改的地方从这里结束

    #定义备份的名字
    DBName=Data_$(date +"%Y%m%d%H").tar.gz
    WebName=Web_$(date +%Y%m%d).tar.gz

    #定义旧数据名字 这里删除60天前的数据
    OldDBName=Data_$(date -d -60day +"%Y%m%d").tar.gz
    OldWebName=Web_$(date -d -60day +"%Y%m%d").tar.gz

    ##备份目录
    cd /root/backups/sql

    #导出数据库,一个数据库一个压缩文件
    for db in `/usr/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do
    (/usr/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 - > ${db}.sql.gz)
    done

    #压缩数据库文件为一个文件
    tar zcf $DBName *.sql.gz
    rm -rf *.sql.gz

    #将文件上传到 Dropbox
    /root/dropbox_uploader.sh upload "$DBName" "/"

    #删除旧的数据
    rm -rf OldDBName OldWebName

    #开始删除远程旧的文件
    /root/dropbox_uploader.sh delete $OldDBName

    #以下内容需要根据实际环境修改

    #发送数据库到Email
    #echo "主题:数据库备份" | mutt -e "my_hdr from:$DOMAIN<root@$DOMAIN>" -a /root/backups/sql/$DBName -s "内容:数据库备份" -- $MAIL_TO

    #压缩网站数据
    #tar zcf /root/backups/$WebName $WEB_DATA

    #将文件上传到 Dropbox
    #/root/dropbox_uploader.sh upload "$WebName" "/"
    #/root/dropbox_uploader.sh delete $OldWebName

    #发送网站数据到Email
    #echo "主题:网站备份" | mutt -e "my_hdr from:$DOMAIN<root@$DOMAIN>" -a /root/backups/$DBName /root/backups/$DBName -s "内容:网站备份" -- $MAIL_TO
  3. 脚本修改完,上传至 /root/ 目录下,并赋予执行权限
    chmod +x /root/backup.sh

  4. 准备添加定时设置,每2小时备份数据

    crontab -e
    0 */2 * * * bash /root/backupsql.sh

    重启Crontab
    /etc/init.d/cron restart

参考文章

http://www.laozuo.org/4560.html

https://cyhour.com/549/