Answers:
我真的不知道如何比手册页更好地解释这一点。
bs=
设置块大小,例如bs=1M
1MiB块大小。
count=
仅复制此数量的块(默认设置为dd永久保存或直到输入用完)。理想情况下,块的bs=
大小是一定的,但可能读取不完整,因此,如果要使用count=
它来复制特定数量的数据(count*bs
),则还应提供iflag=fullblock
。
seek=
在输出中查找此数量的块,而不是写入输出设备的最开始。
因此,例如,这会将价值1MiB的副本复制y\n
到输出文件的位置8MiB 。因此,总文件大小将为9MiB。
$ yes | dd bs=1M count=1 seek=8 iflag=fullblock of=outputfile
$ ls -alh outputfile
9.0M Jun 3 21:02 outputfile
$ hexdump -C outputfile
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00800000 79 0a 79 0a 79 0a 79 0a 79 0a 79 0a 79 0a 79 0a |y.y.y.y.y.y.y.y.|
*
00900000
既然您提到/dev/random
并覆盖了分区,... /dev/random
(以及/dev/urandom
)太慢了,这将永远花费。您可以只使用它shred -v -n 1
,它很快并且通常可以在任何地方使用。
好的,您说手册页没有详细说明,所以我将用易于理解的隐喻来解释它们的含义,这些隐喻是关于一个动人的家伙(它的名称为dd
):
bs=BYTES
read and write up to BYTES bytes at a time
dd
捡起东西(盒子,花瓶,床,米饭等),移到需要放置的地方并放下。直到他不减轻负载,他才不挑其他东西。现在,当您需要准确告诉他每次旅行他应该选择多少个对象时,便可以这样bs
做。您设置他将读写的数据量。在所有有用和常见的命令中,这几乎是必需的。
count=N
copy only N input blocks
这决定了他将要移动的盒子总数。在这种情况下,方框是磁盘上的块。您告诉他移动5个箱子,即使箱子多于5个,他也只能移动5个箱子(如果箱子少于5个,他会带一个他在箱子旁边找到的花瓶加起来)。如果你告诉dd
到count
只有5,而它的地方写,他会复制第5个盖帽,他认为和你想让他们写。
seek=N skip N obs-sized blocks at start of output
通常,拉手会找到第一个放置负载的可用位置,该位置通常在(磁盘的)开始处,然后继续填充直到结束。好吧,这样您就告诉dd
要进一步开始,比如说要代替大厅,从更远的房间之一开始。它只是“跳过”起始块。
现在,根据您的工作,您将需要基于源和目标以及它们将被读取和写入的格式的不同组合。我建议您搜索分开的它们。