Hintergrund
Ich kopiere einige Daten-CDs / DVDs in ISO-Dateien, um sie später zu verwenden, ohne dass sie in das Laufwerk eingelegt werden müssen.
Ich suche im Internet nach Prozeduren und habe eine Menge gefunden:
Verwendung von
cat
zum Kopieren eines Mediums: http://www.yolinux.com/TUTORIALS/LinuxTutorialCDBurn.htmlcat /dev/sr0 > image.iso
Verwendung von,
dd
um dies zu tun (anscheinend die am häufigsten verwendete): http://www.linuxjournal.com/content/archiving-cds-iso-commandlinedd if=/dev/cdrom bs=blocksize count=count of=/path/to/isoimage.iso
Verwendung von nur
pv
um dies zu erreichen: Sieheman pv
für weitere Informationen, obwohl hier ein Auszug davon ist: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
Ich weiß nicht , ob alle von ihnen gleichwertig sein sollte, obwohl ich einige von ihnen getestet (mit dem md5sum
Werkzeug) und zumindest dd
und pv
sind nicht gleichwertig. Nachfolgend finden Sie md5sum
die Laufwerks- und generierten Dateien für jede Prozedur:
md5 von dd procedure: 71b676875b0194495060b38f35237c3c
md5 des pv verfahrens: f3524d81fdeeef962b01e1d86e6acc04
EDIT: Diese Ausgabe stammte von einer anderen CD als die angegebene Ausgabe. Tatsächlich habe ich festgestellt, dass ich einige interessante Fakten als Antwort gebe.
Tatsächlich unterscheidet sich die Größe jeder Datei im Vergleich zueinander.
Gibt es eine optimale Vorgehensweise zum Kopieren einer CD / DVD oder verwende ich die Befehle nur falsch?
Weitere Informationen zur Situation
Hier finden Sie weitere Informationen zu dem Testfall, mit dem ich die bisher gefundenen Verfahren überprüfe:
isoinfo -d i /dev/sr0
Ausgabe: https://gist.github.com/JBFWP286/7f50f069dc5d1593ba62#file-isoinfo-output-19-aug-2015
dd
Kopieren des Mediums mit Ausgabeprüfsummen und Dateiinformationen Ausgabe: https://gist.github.com/JBFWP286/75decda0a67605590d32#file-dd-output-with-md5-and-sha256-19-aug-2015
pv
Kopieren der Medien mit Ausgabeprüfsummen und Dateiinformationen Ausgabe: https://gist.github.com/JBFWP286/700a13fe0a2f06ce5e7a#file-pv-output-with-md5-and-sha256-19-aug-2015
Jede Hilfe wird geschätzt!
cmp file1 file2
? hast dudd
das falsch benutztcount=
(oder überhaupt keine Zählung, die nicht nötig ist, wenn du das Ganze willst?). Fehler in dmesg lesen?dd
Befehl, den Sie verwendet haben (welche Blockgröße? Was zählt?), (2) die Größen und Prüfsummen von alle Ausgaben und (3) alle unabhängigen Informationen, die Sie über die Datenmenge auf der optischen Quell-Disc haben. ……………… PS Warum verwenden Siecount=
aufdd
? Sie möchten das gesamte Disk-Image kopieren, nicht wahr?count=
sagt "so viele kopieren und dann aufhören".isoinfo -d -i /dev/cdrom
die Zählnummer verwenden sollte, um sie zu kennen und zu verwenden - in der Tat, er sagt, man sollte nicht nur verwendendd
. "Wenn Sie auf jeden Fall ein korrektes ISO-Image dieser CD benötigen, müssen Sie die richtige Blockgröße und Blockanzahl ermitteln, bevor Sie das Image erstellen."Antworten:
Alle folgenden Befehle sind gleichwertig. Sie lesen die Bytes der CD
/dev/sr0
und schreiben sie in eine Datei namensimage.iso
.Warum würden Sie eine übereinander verwenden?
Einfachheit. Wenn Sie beispielsweise bereits einen Befehl kennen
cat
oder kennencp
, müssen Sie keinen weiteren Befehl lernen.Robustheit. Dieser ist ein bisschen eine Variante der Einfachheit. Wie groß ist das Risiko, dass das Ändern des Befehls seine Funktion ändert? Sehen wir uns einige Beispiele an:
set -o noclobber
sollten Sie sicherstellen, dass Sie nichts überschreiben. Sie können jedoch ein Gerät überschreiben, wenn Sie versehentlich schreiben>/dev/sda
(bei einer schreibgeschützten CD besteht natürlich kein Risiko). Dies spricht fürcat /dev/sr0 >image.iso
Alternativen (die sich nur schwer auf schädliche Weise verfälschen lassen) wietee </dev/sr0 >image.iso
(wenn Sie die Umleitungen umkehren oder die Eingabe vergessen,tee
wird darauf geschrieben/dev/sr0
).cat
: Sie könnten versehentlich zwei Dateien verketten. Dadurch sind die Daten leicht zu retten.dd
:i
undo
sind nah an der Tastatur und etwas ungewöhnlich. Es gibt kein Äquivalent zunoclobber
,of=
wird gerne etwas überschreiben. Die Umleitungssyntax ist weniger fehleranfällig.cp
: Wenn Sie die Quelle und das Ziel versehentlich vertauschen, wird das Gerät überschrieben (auch hier wird von einem nicht schreibgeschützten Gerät ausgegangen). Wenncp
mit einigen Optionen aufgerufen wird, wie z. B.-R
oder-a
die einige Personen über einen Alias hinzufügen, wird der Geräteknoten und nicht der Geräteinhalt kopiert.Zusätzliche Funktionalität. Das einzige Tool mit nützlichen zusätzlichen Funktionen sind
pv
die leistungsstarken Berichtsoptionen.Hier können Sie jedoch überprüfen, wie viel kopiert wurde, indem Sie sich die Größe der Ausgabedatei ansehen.
Performance. Dies ist ein E / A-gebundener Prozess. Der wichtigste Einfluss auf die Leistung ist die Puffergröße: Das Tool liest einen Block aus der Quelle, schreibt den Block in das Ziel und wiederholt ihn. Wenn der Block zu klein ist, verbringt der Computer seine Zeit mit dem Umschalten zwischen Aufgaben. Wenn der Block zu groß ist, können die Lese- und Schreibvorgänge nicht parallelisiert werden. Die optimale Blockgröße auf einem PC liegt in der Regel bei einigen Megabyte, dies hängt jedoch offensichtlich stark vom Betriebssystem, der Hardware und den anderen Funktionen des Computers ab. Ich habe vor einiger Zeit Benchmarks für Kopien von Festplatte zu Festplatte unter Linux erstellt, die zeigten, dass Kopien auf derselben Festplatte
dd
mit einer großen Puffergröße den Vorteil haben, aber für festplattenübergreifende Kopiencat
gegenüber jederdd
Puffergröße gewonnen haben.Es gibt einige Gründe, warum Sie
dd
so oft erwähnt werden. Abgesehen von der Leistung sind sie keine besonders guten Gründe.cat
(es mit mehr zeilenorientierten Tool war wiehead
,sed
etc.), aber die Leute neigten sie auf binäre Daten zu vermeiden , wegen seiner Verbindung mit Textverarbeitung. Dies ist kein Problem auf modernen Systemen wie Linux, OSX, * BSD oder anderen POSIX-kompatiblen Systemen.dd
die etwas "untergeordneter" ist als andere Tools, wie zum Beispielcat
Geräte, die direkt darauf zugreifen. Dies ist völlig falsch:dd
undcat
undtee
und die anderen lesen alle Bytes von ihrer Eingabe und schreiben die Bytes in ihre Ausgabe. Die wahre Magie ist in/dev/sr0
.dd
Es hat eine ungewöhnliche Befehlszeilensyntax. Wenn Sie also erklären, wie es funktioniert, erhalten Sie eher die Möglichkeit, zu glänzen, indem Sie etwas erklären, das nur geschrieben wirdcat /dev/sr0
.dd
eines großen Puffers kann zu einer besseren Leistung führen, dies ist jedoch nicht immer der Fall (siehe einige Benchmarks unter Linux ).Ein großes Risiko
dd
besteht darin, dass einige Daten unbemerkt übersprungen werden . Ich denkedd
ist sicher, solangeskip
odercount
werden nicht bestanden, aber ich bin nicht sicher, ob dies auf allen Plattformen der Fall ist. Aber es hat keinen Vorteil außer der Leistung.Verwenden
pv
Sie diese Option,cat
wenn Sie den ausgefallenen Fortschrittsbericht anzeigen möchten oder nicht.quelle
pv < /dev/sr0 > image.iso
dasselbe wiepv /dev/sr0 > image.iso
(letzteres ist in den Manualseiten von pv zu finden)?pv /dev/sr0 …
können jedoch den Dateinamen in Fortschrittsberichte aufnehmen,pv </dev/sr0
können dies jedoch nicht.cp
Kann als Alias verwendet werdencp -R
, wodurch (zumindest unter GNU cp als Root)cp
der Geräteknoten und nicht dessen Inhalt kopiert wird ./dev
sind Geräteknoten. Zum Beispielcp -R /dev/sr0 image.iso
würdeimage.iso
eine Datei erstellt, über die auf das CD-Laufwerk zugegriffen wird, genau wie/dev/sr0
eine reguläre Datei, die eine Kopie des Inhalts der CD enthält, die Sie erhaltencp /dev/sr0 image.iso
.dd
höher schlagen ,cat
sondern nur durch einen geringen Spielraum.In diesem Fall gibt es interessante Fakten, insbesondere diese:
dd
undpv
) sind die Prüfsummen identisch .dd
Vorgangs das Laufwerk zu öffnen und mit derselben CD zu schließen und dann den Test mit dempv
Vorgang zu beenden . Dabei habe ich mit beiden Verfahren identische Kopien erhalten.dd
dencount=X
Parameter am Ende der Disc korrekt angehalten wird und dasselbe Disc-Image wie mitpv
(Prüfsummen sind identisch) angezeigt wird. Daher ist es für mich besser, ohnedd
oder nur Parameter zu verwendenpv
.Im Moment scheint
pv
unddd
kann eine CD / DVD-Kopie mit den gleichen Ergebnissen erstellt werden.quelle