我正在使用旧的随机数据覆盖我的硬盘驱动器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
即使在非常慢的机器上,也应该能够利用完整的磁盘速度。
对于想复制,而不仅仅是随机磁盘谁的人只是一个提醒(这是不是说常见的):你可以使用skip=BLOCKS
开始阅读在适当的位置,并seek=BLOCKS
开始写在正确的位置。这两个选项都使用块,而不是字节。中断/重启时,建议删除一堆块以防万一。通常值得将bs
值提高到512 以上,因为如果连续读取大量数据,可以获得更好的性能。
在您的情况下,它确实是您需要传递给的块值seek
。也许您应该尝试调整bs
以查看是否可以提高速度,因为/dev/random
应该快速(当没有可用熵时的伪随机和非阻塞)