web-dev-qa-db-ja.com

なぜddではなくcpを使用してファイルをコピーするのですか? (unix導関数)

* nixでの通常のファイルコピーでは、cpを使用する人を見たことがありません(例:cp /mnt/mydevice/myfile ~/myfile)ですが、最終的にddに遭遇しました。これはまったく同じことをしているようです(dd if=/mnt/mydevice/myfile of=~/myfile)。いくつかの異なるパラメーターが利用可能であることがわかります(ddは微調整されたコピーの方が優れているようです)が、冗長に見えます。これらのツールは本当に同じことをしますか?

22
user232105

主な質問に答えるには、いいえ、彼らは同じことをしません。

ddは指定したファイルで機能し、デバイス間で、またはデバイスからファイルにデータをコピーできるようにします。これは、デバイスが特に関与している場合にデータを移動するために一般的に使用されます(cd-romディスクからISOイメージを作成する:例:dd if =/dev/cdrom of = mycdrom.iso)、またはバックアップrawデバイス(RACデータベースで使用される場合があります) :dd if =/dev/raw/raw1 of = device_raw1)

cpは、ファイルの内容を新しいファイルまたは新しい場所に複製するために使用されます。特に必要なのは、所有権、タイムスタンプ、モード(権限)の保持、および操作を再帰的に実行できること(=ディレクトリをコピーできること)です。

ソース

13
Kruug

ddseekskipなど、コピーするバイトを制限するcountのオプションの1つを指定していない限り、またはddオプションを使用してconvなどのバイトを変更する場合を除き、同じことを行います。これらのオプションのいずれかをddに使用せず、ifofbsなどの一般的に見られるオプションを使用している場合、両方のユーティリティが同じことを行います。両方のファイルを開き、入力から読み取り、出力に書き込みます。入力が使い果たされているか、出力がそれ以上のバイトを受け入れることができません。

「デバイス」ファイルの読み書きについては、これらにddを使用する必要があると説明する迷信がたくさんありますが、それはまさに迷信です。 ddは何も変わらず、ファイルを開いてバイトの読み取りと書き込みを行っているだけです。

9
stew