在不同大小的分区中使用 cat 而不是 cp

在不同大小的分区中使用 cat 而不是 cp

我理解不可能使用ddcat将一个分区的所有数据复制到具有大小差异的另一个分区,这种说法正确吗?例如

第一个是 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 dotglobso 来*匹配名称以 开头的文件和文件夹.

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/,但您至少需要拥有您想要恢复的可用空间量。

相关内容