1 Synology Drive
如果系统支持的话,其实Synology Drive体验真的挺好的,不管是windows、Linux、还是移动端。
1.1 工作模式
服务端(NAS)启用 Synology Drive Server,客户端(Windows/Linux/手机)安装 Synology Drive Client,配置一下备份策略和要同步的文件夹,就完事了,轻松愉快。

1.2 个人体验
我比较喜欢定时同步的“备份任务”模式,相比之下“同步任务”(实时同步)模式对我来说有点太“灵敏”了。有时候我只是在本地新建一个文件夹,还没来得及重命名,它就已经被同步到NAS上去了;或者重命名一个文件,也会因为它同步时机的问题,在NAS上留下一个旧名字的副本,产生一些不必要的“垃圾文件”。

工作日每隔一天(周一、周三、周五)自动备份一次是我个人觉得比较喜欢的频率。
1.3 问题
可惜Synology Drive Client 官方迟迟没有正式支持我的服务器系统 Ubuntu 22.04。虽然网上有各种非官方的安装方法,但考虑到备份的稳定性是第一要务,我暂时放弃了这个方案。
2 Active Backup for Business
ABB 是群晖套件中大名鼎鼎的“神器”,很多企业用它来备份虚拟机和物理服务器。
但它是不可配置的整机备份,实际体验上感觉还是有些太浪费了,目前我这里的服务器只是用来个人网站,学习练习使用,实际业务数据集中在几个明确的路径下,我的目的只是确保重要数据有备份,并不是类似ghost装机一下打算随时复制还原一台服务器出来,在可接受服务器异常停止的前提下,每次备份消耗300G存储+读写还是太奢侈了。
严格来说,ABB 也可以配置“文件服务器备份”模式,只备份特定的文件夹。但相比之下,它的配置流程还是比 Drive 或手动脚本要复杂一些,整体设计思路更偏向于全面的灾难恢复,而不是简单的文件同步。

3 挂载远程目录+定时任务
由于Synology Drive迟迟没有支持我的系统Ubuntu22,所以不得不采取了一些手动备份的笨方法:把NAS当成一个硬盘挂载上来,然后定时执行任务
3.1 NAS中开启NFS服务
控制面板-文件服务中开启
3.2 NAS共享文件夹中开启NFS权限
指定IP范围,设置账户对应关系

3.3 服务器中挂载远程文件夹
#单次挂载测试
mount -t nfs 192.168.xx.xx:volume2/冷备盘/服务器备份/zdream /bak3.4 修改 /etc/fstab 添加自动挂载
192.168.xx.xx:/volume2/冷备盘/服务器备份/zdream /bak nfs rw,vers=4,hard,noatime 0 0
vers=4: 这指定了 NFS 协议的版本为 4。NFS 有多个版本,其中版本 4 是最常用的,提供了更好的性能和安全性。
rw: 这表示挂载是读写模式,即允许你读写这个共享中的文件。
hard: 这个选项决定了当 NFS 服务器不可用时客户端如何响应。hard意味着如果服务器不可达,挂载将失败,直到服务器重新可用为止。与此相对的是soft,它会尝试多次重新连接到服务器,如果失败,会返回一个错误而不是挂载失败。
noatime: 这个选项告诉 NFS 不要更新文件的访问时间戳。这可以减少服务器上的 I/O 操作,并可能提高性能。
0 0: 这两个数字是 fstab 的顺序编号,用来定义挂载的优先级和其他操作。0 0的含义通常是告诉系统不需要对这个条目执行特定的启动时间顺序或者周期性检查(这里这两个字段都不设置)。
3.5 添加自动备份任务
核心是使用rsync命令,rsync是挺强大的,虽然不知道原理是什么,不过它的归档模式很适合我期望的“增量替换备份”的需求。
#使用rsync备份/zdream/ 目录下所有文件到/bak/路径下
"[$(date '+%Y-%m-%d %H:%M:%S')]" && rsync -aq /zdream/ /bak/ >> /bak/sync-logs.log 2>&1
#编辑定时器
crontab -e
#录入定时任务:zdream文件夹同步
20 4 * * * /bin/bash /bak/zdream-sync.sh参数说明
-a: 归档模式,保留文件所有属性(权限、时间戳等),并递归同步目录。非常适合备份。
-q: 安静模式,减少不必要的输出。
/zdream/: 源目录,即本地服务器上需要备份的数据。
/bak/: 目标目录,即我们刚刚挂载的远程NFS备份目录。
>> /bak/sync-logs.log 2>&1: 这是输出重定向。
>>: 将命令的标准输出追加到 sync-logs.log 文件中。
2>&1: 将标准错误输出 (stderr, 文件描述符2) 重定向到与标准输出 (stdout, 文件描述符1) 相同的地方。
3.6 其他
只同步以.txt和.pdf为后缀的文件,并排除其他所有文件。
rsync -aq --include='*.txt' --include='*.pdf' --exclude='*' /zdream/ /bak/ >> /bak/sync-logs.log 2>&1清空备份日志
echo -n "" > /bak/sync.log
评论区