-1

宛先ドライブが 512b セクターに分割されていることがわかっています。ddを使用して 150b のファイルを特定の宛先のこのドライブに転送したいとします。たとえば、開始セクター 2099200 とします。次に、同じ場所のセクターからファイル サイズ (150b) とまったく同じ量のバイトを読み取ります。私はこのようなことを試しました:

sudo dd if=my.txt of=/dev/sdb obs=512 seek=2099199

sudo dd if=/dev/sdb of=my.txt obs=150 count=1 ibs=512 skip=2099199

ほとんど動作しますが、150b のみを転送することはできません:

1+0 レコード in 3+1 レコード out 512 バイト (512 B) をコピー

何が間違っていて、私が必要なことをする方法は? 間違っているかもしれませんが、他の解決策の方が良いかもしれませんが、ファイルシステムに依存しない必要があります。

4

1 に答える 1

2

ページからman:

count=BLOCKS
   copy only BLOCKS input blocks

ファイルをドライブからコピーして戻す場合、512 バイトをコピーすることになります。これは、オプションを使用して入力を 512 バイト ブロックでコピーするように指定し、ibsオプションを使用して 1 つのブロック全体をコピーするためcountです。代わりに、コピーしたいブロックの数をibs値として指定することができます:

sudo dd if=/dev/sdb of=my.txt ibs=150 count=1 skip=2099199

編集:コメントで指摘されているように、この方法ではスキップ値を再計算する必要があります。別の方法は次のとおりです。

sudo dd if=/dev/sdb ibs=512 count=1 skip=2099199 | dd count=150 of=my.txt
于 2013-11-20T17:44:34.170 に答える