用 /dev/urandom 填充驱动器似乎很慢,所以我创建了一个用 FF 填充的文件:
dd if=/dev/zero ibs=1k count=1000 | tr "\000" "\377" >ff.bin
Run Code Online (Sandbox Code Playgroud)
我想用此文件的副本填充驱动器,但以下命令只写入一次:
dd if=ff.bin of=/dev/sdb count=10000
Run Code Online (Sandbox Code Playgroud)
如何用文件的副本填充驱动器,或者是否有更快的方法用 1 填充驱动器?
Sté*_*las 13
简单地做:
tr '\0' '\377' < /dev/zero > /dev/sdb
Run Code Online (Sandbox Code Playgroud)
当驱动器已满时,它将因错误而中止。
dd
在这里使用没有意义。您dd
用来确保读取和写入具有特定大小。没有理由在这里这样做。tr
将进行 4 或 8 kiB 的读/写,这应该足够了。
对于更快的/dev/urandom
替代方案,有shred -v -n 1
(如果伪随机是可以的),或者使用cryptsetup
随机密钥并将其归零(对于加密的零)。即使没有 AES 加速,它也很容易超越/dev/urandom
速度。
不知道有多快tr
,否则你可以dd if= | tr | dd of=
。
可以像这样使用文件作为模式源:
(while [ 1 ]; do cat file; done) | dd of=...
Run Code Online (Sandbox Code Playgroud)
虽然文件应该相当大,以便远程高效。
如果count=
对您很重要,请添加iflag=fullblock
到dd
命令中。部分读取是可能的,这将导致部分块被计为完整块。这在使用较大的块大小(如bs=1M
)时尤其如此,如果您想要速度,则应该这样做。