恢复整个磁盘的DD

Naf*_*Kay 13 dd

我正在使用旧的随机数据覆盖我的硬盘驱动器dd

dd if=/dev/urandom of=/dev/disk/by-uuid/etc bs=512
Run Code Online (Sandbox Code Playgroud)

这是一个 2TB 阵列,而我的 MacBook(运行 Linux,好吗?)只能以大约 3.7MB/s 的速度写入数据,这非常可悲,因为我在家里看到我的台式机达到 20MB/s。今晚回家的时候,我想在dd这里停止跑步,把它带回家,看看用更强大的机器可以在一夜之间取得什么样的进步。

我一直在使用一个简单的循环来监控进度:

while true; do kill -USR1 $PID ; sleep 10 ; done
Run Code Online (Sandbox Code Playgroud)

输出如下所示:

464938971+7 records in
464938971+7 records out
238048755782 bytes (238 GB) copied, 64559.6 s, 3.7 MB/s
Run Code Online (Sandbox Code Playgroud)

如果我要dd在家恢复通行证,我将如何重新启动它?我知道seek参数,但我指的是什么,记录数还是字节数?

fro*_*utz 10

正如@don_crissti 已经评论过的,只是seek=用来恢复。

dd if=/dev/urandom of=/dev/disk/by-uuid/etc bs=512 seek=464938971
Run Code Online (Sandbox Code Playgroud)

GNU dd 还支持以字节为单位进行搜索,因此无论块大小如何,您都可以准确地恢复:

dd if=/dev/urandom of=/dev/disk/by-uuid/etc bs=1M \
   seek=238048755782 oflag=seek_bytes
Run Code Online (Sandbox Code Playgroud)

即使对于像/dev/urandom.

如果您正在寻找更快的替代方案,您可以cryptsetup plainOpen使用随机密钥和零,它应该超过/dev/urandom一个数量级(没有 AES-NI)甚至全速运行(使用 AES-NI)。

你也可以使用shred -n 1,如果伪随机数据是配不上你的使用情况。shred即使在非常慢的机器上,也应该能够利用完整的磁盘速度。


Uri*_*iel 6

对于想复制,而不仅仅是随机磁盘谁的人只是一个提醒(这是不是常见的):你可以使用skip=BLOCKS开始阅读在适当的位置,并seek=BLOCKS开始在正确的位置。这两个选项都使用块,而不是字节。中断/重启时,建议删除一堆块以防万一。通常值得将bs值提高到512 以上,因为如果连续读取大量数据,可以获得更好的性能。

在您的情况下,它确实是您需要传递给的块值seek。也许您应该尝试调整bs以查看是否可以提高速度,因为/dev/random应该快速(当没有可用熵时的伪随机和非阻塞)