我平时的工作内容一般都放在Windows挂载的Onedrive文件夹下,因为我在办公室用的是老师给配的工作站,在宿舍用自己的电脑偶尔充当办公用。除了工作的内容之外还有自己的一些账号、笔记之类的数据,这几年囤积下来,也有二十多个G的数据了。今天把毕业论文搞的差不多了,心想着一定要做好备份,于是就有了这篇文章。

我现在的方案是,办公室和宿舍的两台电脑分别挂Onedrive同步数据,互相同步。这种方法我觉得并不安全,毕竟全部依赖Onedrive这一条路线,一崩全崩,所以需要扩展其他备份方案。

检查了我手上可以用的存储方案,大多数都是白嫖的,不够稳,所以还是想同步到一个冷备份的地方把数据存储起来。但是又希望能够自动化的完成数据的更新,不要我手动点点点。办公的数据又经常更新。于是我把眼光瞄准了我的树莓派上。

目前的方案

手里常用的Onedrive是MSDN E3,史称最稳的Office 365白嫖订阅,我寻思依然有风险存在。为了防止它崩掉,所以准备使用服务器把它的数据定时备份到两个其他订阅的Onedrive里面,一个是A1订阅,另一个是学校发的EDU邮箱申请的Office 365,最后再冷备份一份到树莓派上。这其中数据的产生是在两台电脑上,同步全部经过我的MSDN,最后分布到三个不同的存储策略中。同步软件用Windows的Onedrive客户端和Rclone完成。此外还需要一台服务器完成定时同步工作,可以用树莓派(假如你的树莓派吃灰的话)。

服务器上,Rclone绑定三个Onedrive的详细操作就不说了,MSDN和A1的Onedrive可以直接用官方自带的API,学校发的EDU邮箱申请的Onedrive账号没有API权限,得用Webdav的方式才能挂载。这也直接限制了不能有超过1G的大文件存在。好在我平时工作的内容打包之后都比较小,实在不行还可以分卷压缩嘛。

在服务器root根目录创建文件夹,并新建一个运行脚本并编辑:

mkdir rclone_sh
touch od_backup.sh
vi od_backup.sh

写入Rclone运行的命令:

rclone sync onedrive1: onedrive2: -v

保存退出,测试运行。将输出的数据保存到log文件:

chmod +x /root/rclone_sh/od_backup.sh
/root/rclone_sh/od_backup.sh >> /root/rclone_sh/od_backup.log 2>&1  &

查看输出:

cat /root/rclone_sh/od_backup.log
image.png

运行没问题的话,就可以把上面这行命令写入到一个新脚本里面:

mkdir  /root/rclone_sh/logs/
vi /root/rclone_sh/rclone_cron.sh

写入:

filedate=`date +%Y%m%d`

/root/rclone_sh/od_backup.sh >> /root/rclone_sh/logs/$filedate.log 2>&1  &

赋权:

chmod +x /root/rclone_sh/rclone_cron.sh

测试运行:

nohup /root/rclone_sh/rclone_cron.sh

然后写入到Cron里面:

crontab -e

写入:

0 0 0 1/4 * ?  /root/rclone_sh/rclone_cron.sh

树莓派上类似设置即可。