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
)を使用すると、最初のケースと同じ結果が返されます。