将 dd 图像分解为多个文件

lfa*_*one 8 linux ubuntu dd data-recovery gzip

我正在从硬盘进行一些数据恢复。磁盘上有大约 300GB 的数据,但我缺少另一个具有 300GB 可用空间的硬盘驱动器。

我有 3 个 HD,分别有 150、40 和 120 GB 的可用空间。

为了创建第一个块,我正在考虑执行以下操作:

sudo dd if=/dev/sdf1 bs=4096 count=150G | gzip > img1.gz
Run Code Online (Sandbox Code Playgroud)

我应该在其他机器上运行什么来“从我离开的地方开始”?

Aar*_*ron 9

这是我的命令行:

dd if=/dev/sda bs=4M | gzip -c | split -b 2G - /mnt/backup_sda.img.gz
Run Code Online (Sandbox Code Playgroud)

它将以这种方式创建 2GB 文件:

backup_sda.img.gz.aa
backup_sda.img.gz.ab
backup_sda.img.gz.ac
Run Code Online (Sandbox Code Playgroud)

恢复:

cat /mnt/UDISK1T/backup_sda.img.gz.* | gzip -dc | dd of=/dev/sda bs=4M
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你。


小智 8

一个简单的解决方案可能是只使用“/usr/bin/split”。它只是将文件分解成碎片。您可以使用“-”作为从标准输入读取的输入文件名。split 的好处是它很简单,它不会以任何实际方式影响工具链,您可以通过使用“cat”将它们重新组合在一起(或将它们通过管道传输到另一个应用程序)来“加入”文件。


wfa*_*ulk 7

tar正如 KPWINC 所说,您可能想考虑使用,但要直接回答您的问题,您需要使用dd的“跳过”选项。

如果如上所述,您的第一个命令是:

sudo dd if=/dev/sdf1 bs=4096 count=150GB | gzip > img1.gz
Run Code Online (Sandbox Code Playgroud)

那么你的第二个将是:

sudo dd if=/dev/sdf1 bs=4096 skip=150GB count=40GB | gzip > img2.gz
Run Code Online (Sandbox Code Playgroud)

第三:

sudo dd if=/dev/sdf1 bs=4096 skip=190GB count=120GB | gzip > img3.gz
Run Code Online (Sandbox Code Playgroud)

也就是说,我不确定“GB”后缀是否符合您的意图。我认为它只是对它所遵循的根数进行原始数学运算,而不是弄清楚如何从您提供的块大小中获得那么多 GB。我会做这样的事情:

dd if=/dev/sdf1 bs=`expr 10 * 1024 * 1024` count=`expr 15 * 1024 * 1024 * 1024`
Run Code Online (Sandbox Code Playgroud)

只是为了确定数学。

哦,请确保您的设备在复制时不会在您的下方发生变化。那会很糟糕。