Es ist wirklich historisch, und nicht so wichtig, wenn alles, was Sie tun werden, ist, eine Platte zu einer anderen zu klonen.
Auf herkömmlichen Unix-Systemen waren die Festplatten sowohl über Block- als auch über Zeichengeräte zugänglich und hatten unterschiedliche Anforderungen. 'dd' wurde benötigt, um mit den Block-Geräten zu interagieren, da 'cat' nur über Zeichen-I/O wusste. (Block E/A war besonders wichtig für den effizienten Umgang mit Dingen wie Bandlaufwerken.)
dd kann nützlich sein, wenn Sie eine lang laufende Kopie wegen seiner Skip-und-Suchoptionen neu starten müssen.
Es sei denn, Sie sind auf einem System, das immer noch die Block/Charakter-Unterscheidung für den Festplattenzugriff hat (was Linux nicht tut), und wenn Sie etwas wie Swap-Bytes tun müssen, wird "cat" in Ordnung sein schneller, weil es standardmäßig größere Blockgrößen als dd verwendet).
Beachten Sie, dass, es sei denn, jemand einige große Bastelei in Shell-Design seit dem letzten getan Ich sah, ‚cat foo> bar‘ tut nicht das Schreiben tun, um ‚bar‘ über die Shell; Alle Shells öffnen einen 'Balken' zum Schreiben mit Trunkierung und übergeben den geöffneten Dateideskriptor als Dateideskriptor 1 (stdout) an 'cat' über eine fork/exec. Zu diesem Zeitpunkt befindet sich die Shell außerhalb der Schleife und wird nicht erneut involviert, nachdem sie über den Beendigungsstatus von 'Katze' informiert wurde.
gnu ddrescue ist besser als dd – endolith