我理解不可能使用dd
或cat
将一个分区的所有数据复制到具有大小差异的另一个分区,这种说法正确吗?例如
第一个是 2 块 HDD /dev/sdd1
(100GB),以及使用了 30gb第二个/dev/sdc1
(50GB),没有数据
我当然不能使用:
cat /dev/sdd1 >/dev/sdc1
为什么?因为 sdd1 有 100gb 的分区,而 sdc1 的限制是 50gb
是真的吗?我应该用什么来复印?
我可以使用(假设已安装硬盘):
cp -avr /mnt/sdd1/* /mnt/sdc1/
使用方法正确吗cp
有人知道替代方案吗cp
编辑: 如果由于 Linux 无法识别分区而无法挂载硬盘,我该怎么办?继续这个新问题:“无法识别的分区中的备份没有可用空间”
笔记:我不是指 ddrescue 之类的恢复工具
非常感谢。
答案1
当然cp
可以。您可能必须使用shopt -s dotglob
so 来*
匹配名称以 开头的文件和文件夹.
:
shopt -s dotglob
cp -avr /mnt/sdd1/* /mnt/sdc1/
还有rsync
:
rsync -a --info=progress2 /mnt/sdd1/ /mnt/sdc1/
它具有更好的进度显示。
答案2
请注意文件级别的复制和设备级别的克隆分区或整个驱动器的区别。
按照 muru 的描述复制文件
在这种情况下,您可以使用已挂载的分区,在其中您可以看到目录和文件。
同步是一个非常好的备份和同步工具。
如下所述克隆设备
克隆设备非常危险,您必须反复检查,确保写入正确的设备。否则,您可能会覆盖您的家庭照片……而这仅仅是一个小小的打字错误。克隆时,您应该卸载源设备和目标设备上的所有分区。您已经注意到,您应该克隆到至少相同的设备。
sudo dd if=/dev/sdx of=/dev/sdy bs=4096
克隆设备例如 USB 闪存盘(从驱动器 x 到驱动器 y)。
sudo dd if=/dev/sdxm of=/dev/sdyn bs=4096
将一个分区克隆到另一个分区(从分区 xm 到分区 yn,其中 x 和 y 是驱动器号,m 和 n 是分区号)。
sudo dd if=/dev/sdx of=file.img bs=4096
创建驱动器的映像文件。
sudo dd if=/dev/sdx bs=4096 | xz > file.img.xz
创建一个压缩图像文件。
sudo if=ubuntu.iso of=/dev/sdx bs=4096
从 Ubuntu iso 文件创建 USB 启动驱动器。
-o-
可以使用 cp 而不是 dd 进行克隆并获得类似的结果。
工具
为了降低风险并简化流程,有一些工具可以帮助完成此过程,特别是从 iso 文件和 [压缩] 映像文件创建启动驱动器。示例:Ubuntu 启动盘创建器(在 16.04 LTS 及更新版本中),磁盘(gnome 磁盘),韓國。
克隆兹拉是一款可以在“驱动器表面”上选择已使用块并复制/克隆它们,同时跳过未使用块的工具。这使得使用 Clonezilla 进行克隆比使用 dd(或 cp)进行克隆快得多,尤其是在具有大量可用空间的驱动器中。
答案3
首先,简而言之,不需要,原因是您不知道您的数据在第一个驱动器上的哪个位置。几乎可以肯定您的数据不会在前 30GB 中。这是 Linux 文件系统内置的功能,也是您永远不需要碎片整理的原因;也就是说,您的数据被随机分配到可用空间中,这与以前 MSDOS 时代每周必须进行一次碎片整理的情况相反。
我没有足够的声誉点来调整上面的一个赞扬,但实现你需要的最快方法是这样的:
rsync -avz --delete /mnt/sdd1 /mnt/sdc1
这-r
不是必需的,因为-a
自动暗示了-r
这一点。我已经包含了开关的描述:
-a, --archive
存档模式;等于(-rlptgoD
否-H
,,-A
)-X
--delete
从目标目录中删除多余的文件
-z, --compress
在传输过程中压缩文件数据
您可以选择忽略-z
,但我发现它对于网络复制非常方便,尤其是 Wi-Fi。
对于修复,您尝试过吗fsck
?
我找到了另一个名为 TestDisk 的工具http://www.cgsecurity.org/,但您至少需要拥有您想要恢复的可用空间量。