自动备份 VPS 网站数据到 Dropbox 折腾记录

6 Comments

网上教程一堆,看着简单,不过自己技术太菜,折腾到符合自己需求要费不少功夫,简单记录一下。

Dropbox 准备

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

 549-dropbox-app

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

 549-dropbox-app-token

接着 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 账户信息。

 549-dropbox-app-info

创建备份脚本

参考脚本,需要根据实际环境修改,如文件路径、备份目录等。

#!/bin/bash
script_dir="/root" #这是 dropbox_uploader.sh 所在目录
dropbox_dir="/" #Dropbox 存放备份文件目录
mysql_server="localhost" #数据库服务器地址,一般填 localhost 即可
mysql_user="数据库帐号" #数据库帐号
mysql_pass="数据库密码" #数据库密码
backup_dst="/home/backup" #本地备份文件存放目录,手动创建

if [ $(date +%w) -eq 0 ];then #周日备份整站数据
backup_src="/data/www/cyhour.com /usr/local/apache/conf /usr/local/php/etc" #VPS上要备份的文件/目录,不同目录用空格分开
else #每天备份重要文件、数据
find /data/www/cyhour.com -maxdepth 1 -type f -exec tar cvf $backup_dst/important_files.tar.gz {} + #网站根目录文件
backup_src="/data/www/cyhour.com/wp-content/themes /usr/local/apache/conf /usr/local/php/etc" #VPS上要备份的文件/目录,不同目录用空格分开
fi

#压缩好的备份文件
dstfile="$backup_dst/$(date +"%Y-%m-%d").tar.xz"

#定义 Dropbox 旧数据的名字(30天前)
dropbox_old_file=$(date -d -30day +%Y-%m-%d).tar.xz

cd $backup_dst

#导出SQL数据库,并且按数据库分个压缩
for db in `mysql -u $mysql_user -h $mysql_server -p$mysql_pass -B -N -e 'SHOW DATABASES' | xargs`; do
(mysqldump -u $mysql_user -h $mysql_server -p$mysql_pass --skip-lock-tables ${db} | gzip -9 - > ${db}.sql.gz)
done

#压缩数据库文件合并为一个压缩文件,并删除单独数据库文件
tar zcf sql_all_$(date +%Y-%m-%d).tar.gz *.sql.gz
rm -rf *.sql.gz

#数据库、文件压缩到一起
tar cfzP "$dstfile" $backup_src $backup_dst/*.*.gz

# 将文件上传到 Dropbox
$script_dir/dropbox_uploader.sh upload "$dstfile" "$dropbox_dir/$(date +"%Y-%m-%d").tar.xz"

# 删除 VPS 本地临时文件
rm -rf $backup_dst/*.*

#开始删除远程30天前的文件
$script_dir/dropbox_uploader.sh delete $dropbox_old_file

脚本修改完,上传至 /root/ 目录下,并赋予执行权限。

chmod +x /root/backup.sh

crontab 定时执行脚本

44 4 * * * /root/backup.sh

每天 4:44 自动执行脚本

参考文章

KeenWon - 自动定时备份 VPS

TENNFY WU - 定时备份 VPS 数据至 Dropbox 教程

Unix & Linux Stack Exchange- tar files only, no directories


Centos 7 x86_64 bbr + LAMP 一键安装包环境下实测通过。


Originally Posted on Steemit & Blog by @zhijun.

——最近更新:2017年10月14日
支付宝扫码打赏微信打赏

如果文章对您有帮助,欢迎移至上方按钮打赏老杨

声明: 除非注明,常阳时光文章均为原创,转载请以链接形式标明本文地址
本文地址:https://cyhour.com/549/
Tags:  ,  , 

Comments:6

  1. 难道刚才在备份,所以卡住了?!
    说起来我好久没备份过自己的博客数据了。

    2017.09.19 16:08 # 回复
    1楼
    • @不亦乐乎 刚才是什么时候?内存没爆,应该不至于卡住啊,可能是网络抽风。常备份是好习惯。

      2017.09.19 16:33 # 回复
  2. dropbox很耗系统资源的,不用换个备份吧,比如我用btsync。
    我现在的博客是bitcron,倒是自动备份到dropbox的

    2017.09.20 21:33 # 回复
    2楼
    • @Unee Wang 这个并没在 vps 安装 Dropbox 吧?只是用 api 把文件上传上去。btsync 也会占资源啊,bitcron 我也有一个,还是不大喜欢。

      2017.09.20 22:44 # 回复
  3. 老杨生活真闲适,到处折腾!

    2017.09.21 18:47 # 回复
    3楼

发表留言