• ベストアンサー
  • 困ってます

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バイトだった場合ファイルサイズはどのようになり、もし増えた分はなにが中に入っているのでしょうか。 ご存知の方、アドバイスをお願いします。

共感・応援の気持ちを伝えよう!

  • Linux系OS
  • 回答数3
  • 閲覧数530
  • ありがとう数4

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

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

> /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)

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

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

共感・感謝の気持ちを伝えよう!

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

提示された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

  • ddコマンド

    sudo dd if=/dev/zero of=/home/pi/test bs=8k count=50k conv=fsync; sudo rm -f /home/pi/test を実行しようとしたところ、 sudo dd if=/dev/zero of=/home/pi/test bs=8k count=50k で実行してしまいました。 何をしてしまったでしょう?? 消そうと思っても、どこにコピーされたか、わかりません。

  • ddについて教えてください

    RedHatLinux7.3を使っている者ですが、コマンド dd if=/dev/zero of=vm1.image bs=1 count=1 seek=1G とはどういう意味ですか?

  • Ubuntu9.04でのddコマンド使用について

    Ubuntu9.04を使用しています。 そこにUserModeLinux起動させようと考えています。 そこで、空のファイルを作ろうと、 ~$ dd if=/dev/zero of=uml-root-hardy bs=4096 seek=1M count=1 とコマンド入力しました。 その後しばらく放っておいても反応がありません。 ddコマンドを使用するには、何か事前操作などが必要なのでしょうか。 お返事お願いします。

  • 1Gのddがなぜ一瞬で終わる?

    どこかに書いていたことですが、 $ time dd if=/dev/zero of=1G.img seek=1G bs=1 count=1 とやるとコマンド実行は一瞬で終わって 1G のイメージファイルが生成されるのですが、 なぜ一瞬で終わるのかよく理解できません。 まず、bs*count がコピーされるデータ量なので そもそも生成されるイメージファイルは1バイトになりそうな気がしまして、 なぜ1G になるのか分かりません。 それに、seek は出力の開始位置をずらすだけなので、 このコマンド実行が一瞬で終わるなら 最後の1バイト以外は 元々そこのメモリ領域にあったデータがそのまま残っているならわかるのですが、 $ hexdump -n 1073741825 1G.img 0000000 0000 0000 0000 0000 0000 0000 0000 0000 * 40000001 ちゃんと全領域にゼロが書き込まれているようで、不思議です。 どういうことなのか、どなたか教えて下さい。 よろしくお願いします。

  • ddの前後にマウント、アマウント

    for i in 1 2 3 4 5 6 7 do umount /fome tunefs -a $i /home mount /home dd if=/dev/zero of=/home/EMPTY bs=8k count=1000 umount /home; mount /home time dd of=/dev/null if=/home/EMPTY bs=8k done これはトラックバッファを活かすために連続的に割り当てるブロックの数を1から7まで変えて読み書きの速度を調べるshスクリプトなんですが、ddの前後でマウント、アマウントするのは、dd実行中にifの内容が変化すると一貫性がとれなくなるからだと思うんですが、timeの直前でアマウントしてまたすぐにマウントして元に戻しているのは、どういう意図なんでしょうか。

  • テープに書いたブロックサイズの調べ方

    テープドライブにddコマンドででバックアップをとりリストアを行おうとのですが、そのときのブロックサイズが分からなくなりました。 dd if=/dev/rmt/*bn of=/dev/null bs=*** count=1 でいろいろなブロックサイズを試しましたが分かりません 簡単にブロックサイズを調べる方法をご教示ください。 ソラリスを使っています

  • Linuxコマンド

    Linuxコマンドのついて質問です。 Knoppixを使って >su - >umount /dev/hda >dd if=/dev/zero of=/dev/hda bs=512 count=1 と実行しようとしたのですが、/dev/hdaが読み込み専用モードとなっているためうまくいきません。書き込みも可能にするにはどのようなコマンドがあるのでしょうか? ちなみにKnoppixを起動すると途中でモニタ出力されなくなるのでコンソールで作業しています。よってGUIは使えません。 よろしくお願いいたします。

  • /dev/hda と /dev/hda1

    /dev/hda と /dev/hda1 はそれぞれどのような位置を指しているのでしょうか? 例えば、grub-install /dev/hda (つまり、MBR にインストール) とやった場合と grub-install /dev/hda1 (Linux パーティションの最初のセクタ) とやった場合では、GRUB がインストールされる位置が異なるようです。 プライマリ・マスタ・ディスクの先頭にあるパーティションの最初のセクタ=MBR だと思っていたのですが、 # dd if=/dev/hda of=mbr.dat count=1 bs=512 # dd if=/dev/hda1 of=top.dat count=1 bs=512 # diff -c mbr.dat top.dat とやると、2つのファイルは異なっているようですので、/dev/hda の最初の 1 ブロックと /dev/hda1 の最初の 1 ブロックは異なっているようです。 例えば、/dev/hda の 1 ブロックの直後に /dev/hda1 の 1 ブロックが来ているなどの構造について教えていただけないでしょうか。(URL 参照でも構いません) また、ブートローダを /dev/hda1 にインストールしてしまった場合、/dev/hda1 が空っぽでなかったとすると、/dev/hda1 の最初のセクタにあったデータが壊れてしまう等の問題が発生する可能性はあるのでしょうか? よろしくお願いいたします。

  • ddコマンドを使ったバックアップについて教えてください。

    ランレベル5でddコマンドでdd if=/dev/hda1 of=/dev/hdb1と したところ再起動するとhdaでランレベル5で起動できなくなりました。 hdbのディスクを取り外したところ、ランレベル5で起動できるようになりました。どこがまずかったのかとどう行えばよいか教えていただけないでしょうか?

  • ddコマンドの使い方

    こんにちは、 テスト環境のフルバックアップに挑戦しており /dev/hda(テスト環境os)150G(使用10Gほど) /dev/sda(コピ先)80G と、容量の異なるふたつのハードディスクがあり /dev/hdaのテスト環境osを /dev/sdaにコピーしたいと考えています。 シングルユーザーモードで、 dd if=/dev/hda of=/dev/sda で試して見たのですが、一時間しても終わらなかったので 強制終了して/dev/sdaの中身を見てみたら いろいろとファイルが 出来上がってはいたのですが、ファイルサイズは小さすぎる気がしました。 コマンドはこれで正しいのでしょうか?