「dd」に代わるものはありますか?


13

切り捨て、シーク、スキップを使用してファイルを読み書きするために使用する他のツールは何ですか。ddのコマンドラインオプションは不便で異質なようであり、低速だが正確なシークモード(bs=1)と高速だが柔軟性のないモード(bs=4kまたはその他)を選択するのは好きではありません。

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


2
私はまだ何が悪いのかわかりませんdd。インターフェースが気に入らない場合は、シェルスクリプトラッパーをいつでも配置できます。 ddPOSIX標準にありますが、これは大きなプラスです。
jw013

2
主な間違いは、小数ブロックをシークまたはスキップできないことです。2番目の間違ったものstatus=noxferはデフォルトではなく、壊れており、私が必要としていますiflag=fullblock(いくつかのスクリプトで省略=>壊れたデータ)。
Vi。

4
1. bs=1=>パイプライン全体が遅い。たとえば、正確なフレームからビデオファイルをダンプしたい場合があります。2.「多少の演算が必要」=> onelinersおよびルーチンシェルコマンドにはあまり適していません。
Vi。

1
PSA:dd conv=seek_bytesようになりますseekバイトの精度で作業を。
i336_

1
@ i336_私たちにとって最も安全なオプションは、シェルスクリプトの使用を避け、静的にリンクされたスタンドアロンの実行可能ファイルを作成することだと思います。ときどき、bashでクレイジーなものが直接可能になると聞いて、ファイルへの直接アクセスがそれらのクレイジーなものの1つになるのではないかと考えたため、私は代替手段を探していました。
トレイカズ

回答:


4

ツールがあります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]

1
ddrescue - --> Infile and outfile are the same.ddrescue /dev/stdin /dev/stdout-> Infile and outfile are the same.。物語の悪い始まり...
Vi。

で試しましたdd_rescue。ファイル(stdin)がシーク可能でないことを警告しますが、続行します。試してみてください。しかし、ddrescueよりフル機能で成熟していると感じています。
マルコ

1
@Vi .:メッセンジャーを撃ってはいけません。ddrescue正しいです、パイプはシークできません。ファイルの特定のポイントで読み取りを開始する場合は、別のプログラムからパイプで送られたデータではなく、問題のファイルへのアクセスを許可する必要があります。また、パイプを使用することで、究極のスピードを求めるあなたの希望に反することに注意してください。実際のファイル内での検索は、はるかに効率的です。
ウォーレンヤング

実際、このツールは壊れたデータを救うために設計されているため、パイプ機能はありません。入力ファイルをシークする柔軟性が必要であるが、結果を標準出力にパイプするだけの場合、これは少し残念です。しかし、その意図された目的のために、それは素晴らしいです。
モニカとの軽さレース

2

dcflddは別のddの代替です。入出力シークの柔軟性に関するOPの質問には対応していませんが、グーグル検索でここに到着した他の人には役立つかもしれません。

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

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

2

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

pv < /dev/sda > sda.img

圧縮にも適しています。ディスクを一度にバックアップおよび圧縮する高速な方法は次のとおりです。

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

詳細については、こちらをご覧ください


期待される主な機能は、出力ファイルと入力ファイルのシークです。パイプのシークがないため、pv(パイプビュー)は提供しません。
Vi。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.