it-swarm-ja.com

ddのbsとcountの設定が間違っているのはいつですか?

(間違って、私は「物事を壊す」という意味です。)

ddを使用しようとしているとします。 ifof、場合によってはseekskipの有効なセットを選択しました。コマンドが意図した出力領域を超えて書き込まないように注意深く確認しました。

bscountの悪い組み合わせを選択することで、どうすれば微妙に物事を壊すことができますか?どうやって知るのでしょうか?

私が尋ねる理由は、魔法の好みの値が現れるように見えるからです。たとえば、ランダムな1Gファイルの生成に関するこの質問では、最初の2つの回答はif=/dev/urandomof=sample.txtbs=64M、およびcount=16を使用します。

Linuxで1GBのランダムファイルを作成するにはどうすればよいですか?

もちろん、これらだけが有効な設定ではありませんが、どちらの回答もこれらの設定を使用しており、この選択が特に適切で合理的であることを示唆しています。特に、ファイルシステムや物理ディスクさえないこのような場合、設定の選択が間違っている可能性があるかどうかは私にはわかりません-非効率的であるだけでなく、間違っています。私の推測では、ddが増加するとメモリ使用量も増加し、これらの値はパフォーマンスにのみ影響するため、bsは一度に整数のブロックを書き込む必要があります。

この例は単なる例であり、私が特に関心を持っているものではないので、先に進んで、コピーされているものにファイルシステムがある場合に対処してください。

Ddを使用することは、私にとって常に恐ろしい信仰の飛躍です。

1
Praxeolitic

助けて! ddは怖いです!

あなた一人じゃありません。から Linuxのヒント

'dd'コマンドは元のUnixユーティリティの1つであり、すべてのツールボックスに含める必要があります... ddは「ディスクの破棄」または「データの削除」を意味すると考える人もいます。これは、誤用するとパーティションまたは出力ファイルが破棄される可能性があるためです。非常に迅速に。 ddは、ディスクヘッダー、ブートレコード、および同様のシステムデータ領域を書き込むために使用されるツールであるため、ddを誤用すると、多くのハードディスクやファイルシステムが破壊された可能性があります。

しかし、心配しないでください。その複雑さを知ったら、ロデオカウボーイの穏やかな優雅さでddを呼び出すことになります。

壊れますか?これは何ですかcounting bs

最初に最初の質問に対処しましょう。

bscountの悪い組み合わせを選択することで、どうすれば微妙に物事を壊すことができますか?どうやって知るのでしょうか?

理論的には、「意図しない結果」を「中断」で意味する場合は、それらを指定するだけです。それはどういう意味ですか?さて、image.img/dev/sdcにあるSDカードにコピーしたいとしましょう。したがって、例のパラメータを一致させます。

# dd if=/home/someone/image.img of=/dev/sdc bs=64M count=16

これらの設定を正しく再利用するのは問題ないはずですか? ddが終了するのを待ちましょう...さて、それは何を言っているのですか?

16+0 records in
16+0 records out
1073741824 bytes (1.1 GB) copied, 34.1303 s, 31.5 MB/s

わずか1.1GBがコピーされました!しかし、image.img2GBかそこらなので、全部コピーしたいです! ddに64Mの16ロット(ちなみにM = 1024 * 1024)をコピーするように指示することで、サイズを指定しました。ステータス出力でわかります。ファイル全体をコピーする場合は、サイズをbsおよびcountと一致させます。または、それらを完全に省略します。

# dd if=/home/someone/image.img of=/dev/sdc
4364864+0 records in
4364864+0 records out
2234810368 bytes (2.2 GB) copied, 45.9502 s, 48.6 MB/s

本当にやんちゃになってddに、利用可能なデータよりも多くのデータをコピーするように指示するとどうなりますか?

# dd if=/home/someone/image.img of=/dev/sdc bs=1M count=4096
2131+1 records in
2131+1 records out
2234810368 bytes (2.2 GB) copied, 77.9768 s, 28.7 MB/s

ああ、ddは受信したバイト数だけをコピーします。それは便利です。

監視dd

ステータス出力と言えば、dd(GNUバリアント)はINFO信号SIGUSR1を尊重し、それに応答します。

# echo "In another terminal or TTY"
# pkill -USR1 -n -x dd
# echo "Printed to stdout on the terminal/tty running dd:"
534+0 records in
534+0 records out
559939584 bytes (560 MB) copied, 1.68414 s, 332 MB/s

転送が遅い、または何らかの理由でハングすることが予想される転送を監視するのに便利です。 watchとうまくペアリングしますが、watchに適度に長い間隔を与えるようにしてください。

ddには、知っておくべき他のオプションがありますか?

ddには確かに他のオプションがありますが、ほとんどの場合、それらを使用する必要がある場合は、それらが何をするかがわかります。それでも、いくつかの例でアイデアが得られるかもしれません。

  • conv=CONVS:1つ以上の変換オプションに従って入力を変換します
  • seek=Nおよびskip=N:[output | input]の開始時にN [obs | ibs]サイズのブロックをスキップします
  • status=X :(出力を抑制)noxferまたはnoneのいずれか

私は今ddについてずっと気分が良くなっています!

すごい!すぐに、インターネット経由で起動可能なイメージを送信し、ddsshの組み合わせを使用してmicroSDカードに直接書き込むことができます。

しかし、ddの頭字語は実際には何を表していますか?

最後の質問です。その質問やその他の質問については、 dd のジャーゴンファイルエントリを参照してください。


何かが本来より不透明である場合は、説明を求めることをお勧めします。

4
bertieb