使用Ubuntu18恢复群晖nas硬盘数据外接usb

发布于:2025-04-06 ⋅ 阅读:(25) ⋅ 点赞:(0)

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