`dd` 有替代方案吗?

Vi.*_*Vi. 16 utilities dd binary files

除了dd应该使用哪些工具来读取和写入截断、查找和跳过的文件之外,还有哪些工具?dd的命令行选项看起来既不方便又陌生,我不喜欢在缓慢但精确的搜索模式 ( bs=1) 和快速但不灵活的模式(bs=4k或其他)之间进行选择。

是否有更现代的工具可以从一个文件(或管道、套接字或 dev)中的位置 31337 读取 555 个字节,并将它们写入另一个文件的位置 128205(使用块 512+43),无论是否截断?

Mar*_*rco 5

有一个工具ddrescue(注意,还有dd_rescue一个具有几乎相同功能的不同程序)。它使用更熟悉的语法,单破折号表示短选项,双破折号表示长选项。从手册页:

   -i, --input-position=<bytes>
          starting position in input file [0]

   -K, --skip-size=<bytes>
          initial size to skip on read error [64 KiB]

   -M, --retrim
          mark all failed blocks as non-trimmed

   -o, --output-position=<bytes>
          starting position in output file [ipos]
Run Code Online (Sandbox Code Playgroud)

  • @Vi.:不要射击信使。`ddrescue` 是对的,管道不可查找。如果您想从文件中的特定点开始读取,则需要授予其访问相关文件的权限,而不是从另一个程序传输的数据。另请注意,使用管道会违背您对最终速度的愿望,因为在管道中模拟查找的唯一方法是读取并丢弃您不想处理的部分。在实际文件中查找效率要高得多。 (3认同)
  • `ddrescue - -` -&gt; `Infile 和 outfile 相同。`, `ddrescue /dev/stdin /dev/stdout` -&gt; `Infile 和 outfile 相同。`。故事的开头很糟糕... (2认同)

Dan*_*tts 5

dcfldd是另一种 dd 替代方案。它没有解决OP关于输入/输出寻求灵活性的问题,但可能对通过谷歌搜索到达这里的其他人有用。

它基于 gnu dd,具有以下附加功能:

  • 即时散列 - dcfldd 可以在传输输入数据时对其进行散列,有助于确保数据完整性。
  • 状态输出 - dcfldd 可以根据传输的数据量和操作需要多长时间向用户更新其进度。
  • 灵活的磁盘擦除 - 如果需要,dcfldd 可用于快速擦除磁盘并使用已知模式。
  • 图像/擦除验证 - dcfldd 可以验证目标驱动器是否与指定的输入文件或模式逐位匹配。
  • 多个输出 - dcfldd 可以同时输出到多个文件或磁盘。
  • 分割输出 - dcfldd 可以将输出分割为多个文件,并且比 split 命令具有更多的可配置性。
  • 管道输出和日志 - dcfldd 可以将其所有日志数据和输出发送到本机命令和文件。