使用Ubuntu18恢复群晖nas硬盘数据外接usb
Synology NAS 出现故障,DS DiskStation损坏,则可以使用计算机和 Ubuntu live CD 轻松恢复其硬盘上存储的数据。确保 Synology NAS 硬盘上运行的文件系统是 EXT4 或 Btrfs,然后按照以下步骤恢复数据。此处我们以 Ubuntu 18 版本为例。
1. 接入硬盘
当前使用硬盘盒,USB方式外接群晖的DS损坏NAS硬盘(非RAID)
连接硬盘后,查看硬盘信息
fdisk -l
2.使用Ubuntu18
进入系统,打开终端窗口,登录root用户。
# 切换登录root用户
sudo -i
# 安装依赖
apt update
apt install mdadm lvm2 ntfs-3g
3.查看nas硬盘信息
# 查看物理卷信息
# pvdisplay
root@zhangguoye-dell:/mnt# pvdisplay
--- Physical volume ---
PV Name /dev/md2
VG Name vg1000
PV Size 3.63 TiB / not usable <1.94 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 952682
Free PE 0
Allocated PE 952682
PV UUID HQqLkb-Wqbu-rKrK-zLJZ-yrGW-xxxx-xxxx
# LVM 逻辑卷信息,挂载用
# lvdisplay
root@zhangguoye-dell:/mnt# lvdisplay
--- Logical volume ---
LV Path /dev/vg1000/lv
LV Name lv
VG Name vg1000
LV UUID NZpqYf-t1fc-8wkK-FVbW-GY2H-xxxx-xxxx
LV Write Access read/write
LV Creation host, time ,
LV Status available
# open 1
LV Size 3.63 TiB
Current LE 952682
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
# 确认使用的文件系统类型,挂载参数使用
root@zhangguoye-dell:/mnt# blkid /dev/vg1000/lv
3. 挂载nas
3.1 挂载损坏nas硬盘(USB)
sudo mount -t btrfs /dev/vg1000/lv /mnt/synology -o ro,recovery,skip_balance,clear_cache,degraded
3.2 挂载当前运行的nas
挂载当前nas,添加更多选项以提高稳定性
sudo mount -t cifs //IP/共享文件夹名称 /mnt/synologynew -o username=nas用户,password=nas密码,vers=2.0,iocharset=utf8,rw,file_mode=0777,dir_mode=0777,soft,nounix
4. 拷贝数据
考虑到硬盘可能存在问题,建议使用 rsync 命令来替代 cp,因为 rsync 在处理损坏文件时更可靠,并且支持断点续传。示例如下,异常日志会存放在log
rsync -av --ignore-errors --partial --progress /mnt/synology/homes/ /mnt/synologynew/homes/ 2>/mnt/synologyold/homes_errors.log
rsync -av --ignore-errors --partial --progress /mnt/synology/docker/ /mnt/synologynew/docker/ 2>/mnt/synologyold/docker_errors.log
rsync -av --ignore-errors --partial --progress /mnt/synology/share/ /mnt/synologynew/share/ 2>/mnt/synologyold/share_errors.log
rsync -av --ignore-errors --partial --progress /mnt/synology/web/ /mnt/synologynew/web/ 2>/mnt/synologyold/web_errors.log
# cp参考
cp -rpv --preserve=all --no-clobber /mnt/synology/homes /mnt/synologyold/homes
cp -rpv --preserve=all --no-clobber /mnt/synology/docker /mnt/synologyold/docker
cp -rpv --preserve=all --no-clobber /mnt/synology/share /mnt/synologyold/share
cp -rpv --preserve=all --no-clobber /mnt/synology/web /mnt/synologyold/web
分批传输
由于部分文件夹过大数量过多,可采取分批传输方式
# 分批传输,先传小文件
find /mnt/synology/homes -type f -size -50M -exec rsync -av --ignore-errors --partial --progress --timeout=60 {} /mnt/synologynew/homes/ \;
# 传输中等大小文件
find /mnt/synology/homes -type f -size +50M -size -500M -exec rsync -av --ignore-errors --partial --progress --timeout=60 {} /mnt/synologynew/homes/ \;
# 最后传输大文件
find /mnt/synology/homes -type f -size +500M -exec rsync -av --ignore-errors --partial --progress --timeout=60 {} /mnt/synologynew/homes/ \;
5. 新旧数据对比
DU对比占用空间2者是否一致
du -sh /mnt/synology/homes /mnt/synologyold/homes
du -sh /mnt/synology/docker /mnt/synologyold/docker
du -sh /mnt/synology/share /mnt/synologyold/share
du -sh /mnt/synology/web /mnt/synologyold/web
DIFF对比
diff -r /mnt/synology/homes /mnt/synologyold/homes
diff -r /mnt/synology/docker /mnt/synologyold/docker