一部のデータCD/DVDをISOファイルにコピーして、ドライブでそれらを使用せずに後で使用できるようにしています。
私はネットで手続きを探していて、たくさん見つけました:
メディアをコピーするためのcat
の使用: http://www.yolinux.com/TUTORIALS/LinuxTutorialCDBurn.html
cat /dev/sr0 > image.iso
そのためのdd
の使用(明らかに最も広く使用されているようです): http://www.linuxjournal.com/content/archiving-cds-iso-commandline
dd if=/dev/cdrom bs=blocksize count=count of=/path/to/isoimage.iso
これを実現するためのpv
の使用:詳細はman pv
を参照してください。ただし、以下はその抜粋です。
Taking an image of a disk, skipping errors:
pv -EE /dev/sda > disk-image.img
Writing an image back to a disk:
pv disk-image.img > /dev/sda
Zeroing a disk:
pv < /dev/zero > /dev/sda
私はそれらのいくつかを(md5sum
ツールを使用して)テストし、少なくともdd
とpv
はnotと同等です。以下は、各手順を使用してドライブと生成されたファイルの両方のmd5sum
です。
ddプロシージャのmd5:71b676875b0194495060b38f35237c3c
pvプロシージャのmd5:f3524d81fdeeef962b01e1d86e6acc04
EDIT:その出力は、指定された出力以外のCDからのものでした。実際、私は回答として興味深い事実がいくつかあることに気づきました。
実際、各ファイルのサイズは互いに比較して異なります。
では、CD/DVDをコピーするための最良の手順はありますか、それともコマンドを誤って使用しているだけですか?
これまでに見つけた手順を確認するために使用しているテストケースの詳細を次に示します。
isoinfo -d i /dev/sr0
出力: https://Gist.github.com/JBFWP286/7f50f069dc5d1593ba62#file-isoinfo-output-19-aug-2015
dd
は、メディアをコピーし、出力チェックサムとファイル情報を出力します。出力: https://Gist.github.com/JBFWP286/75decda0a67605590d32#file-dd-output-with-md5-and-sha256 2015年8月19日
pv
は、メディアをコピーし、出力チェックサムとファイル情報を出力します。出力: https://Gist.github.com/JBFWP286/700a13fe0a2f06ce5e7a#file-pv-output-with-md5-and-sha256 2015年8月19日
どんな助けでも感謝します!
以下のコマンドはすべて同等です。 CDのバイト/dev/sr0
を読み取り、image.iso
というファイルに書き込みます。
cat /dev/sr0 >image.iso
cat </dev/sr0 >image.iso
tee </dev/sr0 >image.iso
dd </dev/sr0 >image.iso
dd if=/dev/cdrom of=image.iso
pv </dev/sr0 >image.iso
cp /dev/sr0 image.iso
tail -c +1 /dev/sr0 >image.iso
なぜどちらを使用するのですか?
シンプルさ。たとえば、すでにcat
またはcp
を知っている場合は、さらに別のコマンドを学ぶ必要はありません。
堅牢性。これは単純さを少し変えたものです。コマンドを変更すると、コマンドの機能が変わるというリスクはどのくらいありますか?いくつかの例を見てみましょう:
set -o noclobber
は何も上書きしないようにする必要があります。ただし、誤って>/dev/sda
を書き込んだ場合は、デバイスが上書きされる可能性があります(もちろん、読み取り専用のCDの場合、リスクはありません)。これは、cat /dev/sr0 >image.iso
などの代替案よりもtee </dev/sr0 >image.iso
(有害な方法で誤解しにくい)を支持しています(リダイレクトを反転するか、入力を忘れた場合、tee
は/dev/sr0
)。cat
:2つのファイルを誤って連結する可能性があります。これにより、データを簡単に回収できます。dd
:i
とo
はキーボードの近くにあり、やや珍しいです。 noclobber
に相当するものはなく、of=
は何でも喜んで上書きします。リダイレクト構文は、エラーが発生しにくくなります。cp
:ソースとターゲットを誤って入れ替えると、デバイスが上書きされます(ここでも、読み取り専用でないデバイスを想定しています)。 cp
が-R
や-a
などの一部のオプションを使用して呼び出された場合、エイリアスを介して追加すると、デバイスのコンテンツではなくデバイスノードがコピーされます。追加機能。便利な追加機能を持つ1つのツールはpv
で、その強力なレポートオプションがあります。
しかし、ここで出力ファイルのサイズを確認することで、コピーされた量を確認できます。
パフォーマンス。これはI/Oバウンドプロセスです。パフォーマンスにおける主な影響はバッファサイズです。ツールはソースからチャンクを読み取り、宛先にチャンクを書き込み、繰り返します。チャンクが小さすぎる場合、コンピューターはタスク間の切り替えに時間を費やします。チャンクが大きすぎると、読み取り操作と書き込み操作を並列化できません。 PCでの最適なチャンクサイズは通常数メガバイト程度ですが、これは明らかにOS、ハードウェア、およびコンピューターの動作に大きく依存しています。 Linuxで ベンチマーク をハードディスクからハードディスクへのコピーに作成したところ、同じディスク内のコピーの場合、dd
バッファサイズには利点がありますが、ディスク間コピーの場合、cat
はどのdd
バッファサイズよりも優先されます。
dd
が頻繁に言及されるのにはいくつかの理由があります。パフォーマンスは別として、それらは特に良い理由ではありません。
cat
の問題かどうかはわかりませんが(head
、sed
などの行指向のツールに問題がありました)、テキスト処理との関連があるため、バイナリデータではそれを回避します。これは、Linux、OSX、* BSDなど、POSIX準拠のシステムでは問題になりません。dd
はcat
などの他のツールよりもいくらか「低レベル」であり、デバイスに直接アクセスするという神話があります。これは完全に偽です:dd
とcat
とtee
と他のすべては、入力からバイトを読み取り、そのバイトを出力に書き込みます。本当の魔法は/dev/sr0
にあります。dd
は通常とは異なるコマンドライン構文を使用しているため、その仕組みを説明することで、cat /dev/sr0
とだけ書いて何かを説明することで、輝かせる機会が増えます。dd
大きなバッファサイズを使用するとパフォーマンスが向上しますが、常にそうであるとは限りません( Linuxのいくつかのベンチマーク を参照)。dd
の主なリスクは 黙って一部のデータをスキップできる です。 dd
またはskip
が渡されない限り、count
は安全だと思いますが、すべてのプラットフォームでこれが当てはまるかどうかはわかりません。ただし、パフォーマンス以外の利点はありません。
そのため、ファンシープログレスレポートが必要な場合はpv
を、必要ない場合はcat
を使用してください。
この場合、特に以下のような興味深い事実があります。
dd
およびpv
)でチェックサムを確認しました同一です。dd
手順を実行した後、ドライブを開いて同じディスクで閉じ、pv
手順でテストを終了するというアイデアがありました。それだけで、両方の手順で同一のコピーを取得しました。dd
w/o the count=X
パラメータはディスクの最後で正しく停止し、pv
と同じディスクイメージを提供します(チェックサムは同じです)。そのため、dd
w/oパラメータを使用するか、ちょうどpv
です。したがって、現時点では、pv
とdd
が同じ結果でCD/DVDコピーを実行できるようです。