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)
我应该在其他机器上运行什么来“从我离开的地方开始”?
这是我的命令行:
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”将它们重新组合在一起(或将它们通过管道传输到另一个应用程序)来“加入”文件。
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)
只是为了确定数学。
哦,请确保您的设备在复制时不会在您的下方发生变化。那会很糟糕。