我是无法承受近10年的代码、照片丢失的后果的,所以自建NAS后我必须保证数据的可靠性。
由于采用的是淘汰电脑做的私家NAS服务器,所以硬件是不可靠、不可信的。能够接受硬件损坏的风险,但不能忍受数据丢失的风险。 所以我需要一个数据备份的方案。
常见的数据备份方案是,RAID冗余保证服务长期在线,然后配合热备技术进行实时备份。
不过放弃RAID1(RAID5) 及热备方案的原因是:
关于RAID可参考这篇文章 自建NAS,是否需要RAID磁盘阵列?
再三考虑后,选择了系统全盘冷备份的方案,该方案完全可控,最大限度的延长硬盘寿命,并保证数据安全性。
数据备份:
我使用的系统是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/
数据恢复:
该NAS只损坏了硬盘,只需要把冷备盘上的各分区上的文件拷贝到新硬盘上对应分区,然后grub修复启动即可。
情况比较严重,用了全新电脑并重装了系统,则挂载冷备的系统,生成已安软件装列表,重新安装原有软件:
# 获取已安装软件列表
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分区格式,重建引导