• ベストアンサー

ddコマンドについて

% dd if=/dev/zero of=zero.dat count=1000 ⇒ 512*1000 バイトの zero.dat が生成される % dd if=/dev/zero of=zero.dat count=2048 bs=1 ⇒ ブロックサイズを 1 に指定。2048 バイトの zero.dat が生成される http://x68000.q-e-d.net/~68user/unix/pickup?dd とのことですが、では/dev/zeroが50バイトだった場合ファイルサイズはどのようになり、もし増えた分はなにが中に入っているのでしょうか。 ご存知の方、アドバイスをお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • entree
  • ベストアンサー率55% (405/735)
回答No.3

> /dev/zeroが50バイトだった場合ファイルサイズはどのようになり、 > もし増えた分はなにが中に入っているのでしょうか。 既に回答に出ているとおり、/dev/zero が 50 バイトなどということはあり得ない話ですが、50 バイトのファイル data に対して以下のように dd を使用した場合、 % dd if=data of=zero.dat count=1000 ==> zero.dat は 50 バイト % dd if=data of=zero.dat count=2048 bs=1 ==> zero.dat は 50 バイト 要するに読めなくなったところで終了です。 もし C を読めるのであれば、詳細は coreutils の src/dd.c を見れば分かると思います。

参考URL:
http://ftp.gnu.org/gnu/coreutils/

その他の回答 (2)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

えっと... 何が聞きたいんだろ? 「/dev/zero が 50バイトだった場合」というのがわからん. /dev/zero は「読み出すたびに常に 0 が出てくる仮想デバイス」であって, 「バイト数」という概念は存在しません. だからそのあとの「ファイルサイズはどのようになり」とか「増えた分はなにが中に入っているのでしょうか」とかいう疑問は意味を持ちません.

  • ann_dv
  • ベストアンサー率43% (528/1223)
回答No.1

提示されたURLの記述を熟読されれば、おのずと答えは見えてくると思うのですが、 % dd if=/dev/zero of=zero.dat count=50 bs=1 ⇒ ブロックサイズを 1 に指定。50バイトの zero.dat が生成される 2048を50に変更するだけの話です。 また、提示されたURL内に以下の注意事項があります。 『この例では入力がファイルであるためブロックサイズはどんな値でも (速度以外は) 問題ないが、入力がデバイスの場合は適切な値に設定する必要がある。ブロックデバイスの場合、ブロックサイズはセクタサイズの整数倍でなくてはならない』 入力がHDD内の特定パーティションであれば、ブロックサイズはクラスタサイズに合わせておけばエラーにはならないでしょう。 参考までにFATとNTFSのデフォルトのクラスタサイズ情報を載せておきます。

参考URL:
http://support.microsoft.com/kb/140365/ja

関連するQ&A