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


21

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


通常のファイルに対してのみ同じことを行います。たとえば、でディレクトリをコピーしてみてくださいdd
Eddy_Em

...またはデバイス(のような/dev/sda)を持ちますcp
jpaugh

あなたの質問は答えられましたか?
クルーグ

@Eddy_Em、それは何が問題なのですか?
Pacerier

回答:


13

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

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

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

ソース


3
あ!さて、ddはrawファイルをコピーしますが、cpは内容をコピーします(これにより、たとえばファイルシステムを壊さずにディレクトリをコピーできます)。ありがとう!
user232105

5
@クルーグ、私はまだcpそれddができないことを何ができるかわからないので、私は何かを見逃しているに違いありません。ddまた、「ファイルの内容を新しいファイルまたは新しい場所に複製する」こと「所有権、タイムスタンプ、モードを維持することもできますか
Pacerier

3
私が理解できるものからの@Pacerier cpは、より焦点を絞ったユーティリティddですが、より一般的です。 ddできることはすべてcpできるが、cpできることの一部しかddできない。
クリュッグ

私は違いがはっきりと説明されているとは思わない。cpでできないこととddでできることは何ですか?そして逆に?
16

9

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

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


これは多かれ少なかれ...デバイスに応じてof = destinyを使用すると、いくつかの問題が発生する可能性があります。USBフラッシュディスク。>> destinyを使用し、of = xxxパラメーターを削除して動作させる必要があることがわかりました。of = destinyを使用すると、skipおよびiflags = skip_bytesフラグを使用して動作するため、奇妙な問題が発生します。of = destinyが>> destinyがスムーズになる状況では正しく動作しない可能性があるため、注意とテストが必要です。大きなファイルをステップ付きでペンドライブに保存するスクリプトを書きました。SDカードのディスクパーティションを台無しにするために使用される400MBのフルコピー。
セルヒオアブレウ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.