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

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

Dropbox 准备

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

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

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

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

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

创建备份脚本

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

#!/bin/bash
script_dir="/root/Dropbox-Uploader/" #这是 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/ 目录下,并赋予执行权限。

mkdir -p /home/backup
chmod +x /root/backup.sh

注意:如果上面脚本 tar 打包 --exclude 无法排除指定目录,请将需要打包的目录放至排除参数后。

如:test 目录下有 1 2 3 4 5 这5个目录;1 下有 6 7 两个目录。现在要将 3 4 5 6 目录 tar 打包,2和1下的6这两个目录不要。

命令:tar -zcvf test.tar.gz --exclude=1/6 --exclude=2 test

crontab 定时执行脚本

44 4 * * * /root/backup.sh

每天 4:44 自动执行脚本

注意:最好运行 service crond status (Debian:/etc/init.d/cron status)检查 crond 服务是否启动,service crond start 可手动启动,或者设置开机启动:chkconfig --level 35 crond on

参考文章

KeenWon - 自动定时备份 VPS

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

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


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

后记

执行脚本可能提示:which: no shasum in

比如:

which: no shasum in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)

CentOS 系统,SSH 安装一下 perl-Digest-SHA 就好:yum install -y perl-Digest-SHA

除非注明,垃圾站文章均为网络收集,本文地址 https://cyhour.com/549/,转载时烦请以链接形式注明原始出处。
声明:我们不销售主机,任何VPS主机均有跑路风险且需定期备份,防止数据丢失。信息以实际为准,评测仅供参考不代表权威!
🍄:Netflix 奈飞 YouTube 合租

WordPress 5.0+ 禁用 Gutenberg & WordPress 5.8+ 禁用 Widget 块编辑器

2018.12.06,WordPress 5.0 发布,代号 Bebo。最大的亮(黑)点就是正式引入新的基于块(block-based)的编辑器 —— Gutenberg 编辑器,以及新的默认主题 —— Twenty Nineteen。 WordPress 5.0+ 禁用 Gutenberg 编辑器 第一时间升级,打开文章编辑,一股说不出的杯具感在心头……变化太大,心累…
浏览: 65 标签:  ,  ,  , 

Adobe Flash Player 去helper(Win10 完美恢复)

Adobe 在2020年12月31日后将不再支持 Adobe Flash Player,从2021年1月12日开始,阻止 Flash 内容在 Flash Player 中运行。截图 虽然不喜欢 Adobe Flash Player,但是有些网站目前仍然离不开 Adobe Flash Player,过渡解决方法是:安装中国特供版 Adobe Flash Player 或者安装网友修改 Adobe Flash…

升级新版 Google AdSense 代码提升广告效果

2021年7月19日,Google AdSense 最近发布了新版 AdSense 代码。通过新版 AdSense 代码,AdSense 可以更早触发优化功能,从而提升网站上广告效果。新广告代码适用于自动广告和广告单元。 如何获取 Google AdSense 新版代码? 无需采取任何措施。在下次登录 AdSense 后,您将拥有对新广告代码的访…

利用 Google Analytics 追踪 WordPress 站内搜索关键词

Google分析(Google Analytics)是一个由 Google 所提供的网站流量统计服务。Google 分析(Analytics)现在是互联网上使用最广泛的网络分析服务。 利用 Google Analytics 追踪 WordPress 站内搜索关键词 优化内容 如果网站/博客在 Google Analytics 流量统计,利用 Google Analytics 追踪 W…
浏览: 65 标签:  ,  ,  ,  ,  , 

Comments:8

  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楼
  4. 请问oneinstack的自动备份,也是使用这个API吗?谢谢

    2019.07.05 22:45 # 回复
    4楼

发表留言

Vultr 送$100,搬瓦工年付最低$49,优惠码 BWH3HYATVBJW,更多推荐VPS信息