用OneDrive做容灾备份

悲剧

之前这个博客运行在狗云的香港服务器上,速度尚可,价格合适,提供每天的VM级别的备份。但去年年底一次事故,供应商的服务器烧了(字面意思,真的着火了),对应的相关数据全部丢失,赔偿措施也不过是补偿一个月的时间而已(价值20多元)。

这个经历告诉我两个道理:

  • 很多VPS并不是真的「云」服务器。
  • 我低估风险了。

于是找出了之前还持有的但因为线路太差,被用来跑一些奇怪计算的腾讯云美国服务器。这台服务器只有1M的带宽,回国线路没有CN2之类的优质线路,但配置不错,多跑个博客完全没有问题。趁这个机会,更换了域名(因为很多年前我的英文名叫shayne,但几乎没有在任何正式场合使用过),重新建起了这个wordpress。

接下来就是容灾了。从数据上说,wordpress的数据主要包含content目录下的文件(插件,主题,附件)和关系型数据库里的内容数据。为了更简单的实现冷备份,本博客使用容器运行,因此完全将数据在文件系统层面整合到了一起。那么最终的核心,就是把所有相关的数据文件定时保存到OneDrive上。

容器运行Wordpress和MySQL

参考:

https://www.atlantic.net/vps-hosting/install-wordpress-with-docker-on-ubuntu-20-04/

配置Nginx

因为服务器上还有其他Web服务运行,所以配置Nginx做转发。

server {
  listen 80;
  server_name www.xiaowenz.com;
  location / {
    proxy_pass <http://localhost:8081>;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

server {
    server_name xiaowenz.com www.shaynez.com shaynez.com;
    return 301 $scheme://www.xiaowenz.com$request_uri;
}

使用RClone连接OneDrive

参考

需要在Mac或Windows笔记本上完成授权,并复制Token到服务器rclone config中。

部分配置,非完整命令。

#install rclone
curl <https://rclone.org/install.sh> | sudo bash

#config onedrive auth

#compress data folder and copy to ondrive
tar -czvf wordpress.tar.gz ./wordpress
rclone copy wordpress.tar.gz onedrive:ServerBackup

#schedule
0 2 * * * /root/backup.sh >> /root/log/backup.log 2>&1
Built with Hugo
Theme Stack designed by Jimmy