web-dev-qa-db-ja.com

`dd`の代替はありますか?

切り捨て、シーク、スキップを使用してファイルを読み書きするには、他にどのツールを使用すればよいですか。 ddのコマンドラインオプションは不便で外国のように見え、遅いが正確なシークモード(bs=1)と高速ですが、柔軟性のないモード(bs=4kまたは何か)。

位置31337から1つのファイル(またはパイプ、ソケット、またはdev)から555バイトを読み取り、切り捨ての有無にかかわらず、位置128205の別のファイル(ブロック512 + 43を使用)に書き込む最新のツールはありますか?

14
Vi.

ツールddrescueがあります(注意してください。dd_rescueは、ほぼ同じ機能を持つ別のプログラムです)。短いオプションには単一のダッシュを使用し、長いオプションには二重のダッシュを使用する、より一般的な構文を使用します。 manページから:

   -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]
4
Marco

良い代替案はpvです。最も効率的なブロックサイズを自動的に計算するだけでなく、本質的にスピードアップするだけでなく、とりわけ進捗状況も提供します。使い方は簡単です:

pv < /dev/sda > sda.img

圧縮もうまくいきます。 1回の移動でディスクをバックアップして圧縮する高速な方法は次のとおりです。

pv < /dev/sdb | pigz -9 > disk.img.gz

詳細は こちら をご覧ください。

3
Bobby

dcfldd は別のddの代替です。入出力シークの柔軟性に関するOPの質問には対応していませんが、Google検索を介してここに到着する他のユーザーには役立つ場合があります。

これはgnu ddに基づいており、次の追加機能があります。

  • オンザフライでのハッシュ-dcflddは、転送される入力データをハッシュすることができ、データの整合性を確保するのに役立ちます。
  • ステータス出力-dcflddは、転送されたデータの量と操作にかかる時間に関して、ユーザーの進捗状況を更新できます。
  • 柔軟なディスクワイプ-dcflddを使用すると、ディスクをすばやく、必要に応じて既知のパターンでワイプできます。
  • イメージ/ワイプ検証-dcflddは、ターゲットドライブが指定された入力ファイルまたはパターンのビットごとの一致であることを検証できます。
  • 複数の出力-dcflddは、同時に複数のファイルまたはディスクに出力できます。
  • 出力の分割-dcflddは、splitコマンドよりも構成性の高い複数のファイルに出力を分割できます。
  • パイプされた出力とログ-dcflddは、すべてのログデータと出力を、コマンドとファイルにネイティブに送信できます。
2
Dan Pritts