Warum kopieren wir Dateien mit cp und nicht mit dd? (in Unix-Derivaten)


21

Für das normale Kopieren von Dateien in * nix habe ich bisher nur Leute gesehen, die cp (zB cp /mnt/mydevice/myfile ~/myfile) benutzt haben, aber ich bin irgendwann darauf gestoßen dd, was genau dasselbe zu tun scheint ( dd if=/mnt/mydevice/myfile of=~/myfile). Ich sehe, dass sie einige verschiedene Parameter zur Verfügung haben (dd scheint besser in der Feinabstimmung zu sein), aber sie scheinen redundant zu sein. Tun diese Tools wirklich dasselbe?


Sie machen das Gleiche nur für reguläre Dateien. Versuchen Sie zum Beispiel, ein Verzeichnis mit zu kopieren dd.
Eddy_Em

... oder ein Gerät (wie /dev/sda) mit cp.
Jpaugh

Wurde Ihre Frage beantwortet?
Kruug

@Eddy_Em, was ist daran falsch?
Pacerier

Antworten:


13

Um Ihre Hauptfrage zu beantworten: Nein, sie machen nicht dasselbe.

dd bearbeitet die von Ihnen angegebene Datei, sodass Daten zwischen Geräten oder von einem Gerät in eine Datei kopiert werden können. Dies wird häufig zum Verschieben von Daten verwendet, wenn Geräte speziell betroffen sind (erstellen Sie ein ISO-Image von einer CD-ROM, zum Beispiel: dd if = / dev / cdrom of = mycdrom.iso) oder zum Sichern von Raw-Geräten (manchmal in RAC-Datenbanken verwendet) : dd if = / dev / raw / raw1 von = device_raw1)

cp wird zum Duplizieren von Dateiinhalten in eine neue Datei oder an einen neuen Speicherort verwendet. Dinge, die Sie speziell dort wollen, sind die Beibehaltung des Eigentums, des Zeitstempels und des Modus (Rechte) und die Möglichkeit, den Vorgang erneut auszuführen (= Verzeichnisse kopieren zu können).

Quelle


3
Ah! Okay, dd kopiert also die Rohdatei, während cp den Inhalt kopiert (wodurch es beispielsweise möglich ist, Verzeichnisse zu kopieren, ohne das Dateisystem zu beschädigen). Vielen Dank!
user232105

5
@Kruug, ich muss etwas vermissen, weil ich immer noch nicht sehe, was cpdas ddnicht kann. ddist auch in der Lage, "Dateiinhalte in eine neue Datei oder an einen neuen Speicherort zu duplizieren" und "Eigentumsrechte, Zeitstempel und Modus beizubehalten", oder?
Pacerier

3
@ Pacerier ist nach meinem Verständnis cpein konzentrierteres Hilfsprogramm, während ddes allgemeiner ist. ddIch cpkann alles, was ich kann, aber cpich kann nur einen Teil von dem ddtun, was ich kann.
Kruug,

Ich denke nicht, dass der Unterschied deutlich genug erklärt wird. Was kann cp nicht und dd nicht? Und umgekehrt?
Gorn

9

Sie tun dasselbe, AUSSER Sie geben eine der Optionen an, bis zu ddder die Bytes kopiert werden, z. B. seekoder skipoder, countoder wenn Sie die ddOptionen zum Mutieren von Bytes verwenden, z conv. Wenn Sie eine dieser Optionen nicht verwenden ddund nur die am häufigsten verwendeten Optionen wie " if," verwenden of, bstun beide Dienstprogramme dasselbe: Öffnen Sie beide Dateien, lesen Sie aus der Eingabe und schreiben Sie in die Ausgabe, bis eine der Eingaben erschöpft ist oder die Ausgabe kann nicht mehr Bytes akzeptieren.

Es gibt viel Aberglauben beim Lesen und Schreiben von "Gerätedateien", die besagen, dass Sie sie ddfür diese verwenden müssen, aber es ist nur dieser Aberglaube. ddmacht nichts anderes, wir öffnen nur Dateien und lesen und schreiben Bytes.


Mehr oder weniger ... wenn Sie = destiny verwenden, können je nach Gerät einige Probleme auftreten, z. USB Flash Speicher. Ich stelle fest, dass ich den Parameter >> destiny und remove of = xxx verwenden muss, damit er funktioniert. Wenn ich of = destiny benutze, treten seltsame Probleme auf, weil ich mit skip und iflags = skip_bytes flag operiere ... also nicht so viel Aberglaube. Benötigt Sorgfalt und Tests, da das Schicksal unter bestimmten Bedingungen, unter denen das Schicksal reibungslos verläuft, möglicherweise nicht richtig funktioniert. Ich habe ein Skript geschrieben, um große Dateien mit Schritten auf dem Pendrive zu speichern. Vollständige 400-MB-Kopie, mit der die Festplattenpartition der SD-Karte durcheinander gebracht wird.
Sergio Abreu
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.