同じブロックに対して異なる結果が表示されるLinux ddの問題

同じブロックに対して異なる結果が表示されるLinux ddの問題

ddコマンドを使用して、Linuxオペレーティングシステムで簡単なテストケースを実行しようとしています。

次のコマンドを使用して単純なディスクイメージを作成します。

dd if=/dev/urandom of=disk.img bs=1M count=100 

最初のテストは次のとおりです。
次に、次のコマンドを実行します。

dd if=disk.img of=output_1 bs=1k count=4
dd if=disk.img of=output_2 bs=4k count=1
md5sum output_1 output_2 
bc0245c10ff529042fd2a5335ed1573f  output_1
bc0245c10ff529042fd2a5335ed1573f  output_2   

あなたは見ることができますoutput_1そしてoutput_2まったく同じ md5 ハッシュ値です。

2番目のテストは次のとおりです。
これで、ddコマンドにスキップパラメータを追加します。

dd if=disk.img of=output_1 skip=1500 bs=1k count=4 
dd if=disk.img of=output_2 skip=1500 bs=4k count=1
c5b0e8dde317c25011b31a5c48580477  output_1
4585d39fcf93cec4abc6c55094aac724  output_2    

このブロックの結果が異なるのはなぜですか?
私のテストのどの部分が間違っていますか?

ベストアンサー1

スキップ引数はバイトではなく(入力)ブロックにあります。マニュアルページ:

skip=N    skip N ibs-sized blocks at start of input

最初のケースでは、スキップした部分は次のようになります。

1500 * 1KiB = 1536000バイト

2番目のケース:

1500 * 4KiB = 6144000バイト

その値を正確に分割できる限り調整が可能です。 2番目のケースでは、1500 * 1k / 4k = 375(skip=375)を使用すると、最初のケースと同じ結果が返されます。

おすすめ記事