自建NAS,如何备份数据?

我是无法承受近10年的代码、照片丢失的后果的,所以自建NAS后我必须保证数据的可靠性。

由于采用的是淘汰电脑做的私家NAS服务器,所以硬件是不可靠、不可信的。能够接受硬件损坏的风险,但不能忍受数据丢失的风险。 所以我需要一个数据备份的方案。

常见的数据备份方案是,RAID冗余保证服务长期在线,然后配合热备技术进行实时备份。

不过放弃RAID1(RAID5) 及热备方案的原因是:

  1. 几T及以上的数据一旦出错,重建成本过高,甚至无法重建。
  2. 成本高,几块硬盘同时运行,寿命损耗大。
  3. 热备通常需要其他的服务器,价格太贵。  

关于RAID可参考这篇文章 自建NAS,是否需要RAID磁盘阵列?

再三考虑后,选择了系统全盘冷备份的方案,该方案完全可控,最大限度的延长硬盘寿命,并保证数据安全性。

 

数据备份:

  1. 重要数据目录全备份
  2. 关键服务、如Nginx、SSH、DHCP、Nextcloud等配置文件,及程序文件。

我使用的系统是Ubuntu20.04,而Linux下一切皆文件,所以只备份关键文件即可,备份如下:

# 挂载硬盘到 /mnt 目录,然后rsync 同步, --dry-run 模拟下效果,注意替换自己路径。 如有必要使用增量备份。
sudo mount /dev/sdc1 /mnt/
sudo rsync --dry-run -av --progress --exclude=/home/www/nextcloud/data/appdata_xxxx/preview/* --exclude=/home/www/nextcloud/data/updater-xxxx/backups/* --exclude=/var/lib/emby/cache/* --exclude=/proc --exclude=/lost+found --exclude=/mnt --exclude=/nextcloud_preview --exclude=/sys --exclude=/tmp --exclude=/media --delete / /mnt/

 

数据恢复:

  1. 该NAS只损坏了硬盘,只需要把冷备盘上的各分区上的文件拷贝到新硬盘上对应分区,然后grub修复启动即可。

  2. 情况比较严重,用了全新电脑并重装了系统,则挂载冷备的系统,生成已安软件装列表,重新安装原有软件:

# 获取已安装软件列表
dpkg --get-selections | grep -v deinstall > installed_apps.files

# 重新安装软件
sudo apt-get update
sudo apt-get dist-upgrade
dpkg --set-selections < installed_apps.files

sudo dselect

 

最后把配置文件覆盖过去,就完成了恢复,一切皆在可控范围内。


注1:Linux下卸载硬盘小技巧:

sudo umount /dev/sdc1  # 卸载
sudo hdparm -Y /dev/sdc1  # 休眠
echo 1 | sudo tee /sys/block/sdc/device/delete  # 删除,此时即可拔下硬盘了。

单纯执行第一步就拔掉硬盘(或移动硬盘),再次挂载时大概率无法挂载硬盘,或者发现硬盘日志不对,进行修复硬盘。

注2:关于修复时,挂载硬盘上原来系统或修复引导,请参考:ubuntu 更改boot分区格式,重建引导

 

评论列表: