Ich bin nicht sehr fließend mit Bash ... Ich möchte den Inhalt einer DVD-R auf schnellstmögliche Weise auf zwei verschiedene Festplatten kopieren.
(UI-basierte Lösungen sind ebenfalls willkommen)
Vielen Dank!
Der Engpass wird wahrscheinlich vom DVD-Laufwerk gelesen, daher müssen wir sicherstellen, dass er entweder nur einmal oder zweimal gelesen wird, jedoch in ausreichend engen Intervallen, damit sich die Daten weiterhin im Cache befinden. Letzteres klingt schwierig, also lasst uns zum ersten gehen.
Wir müssen irgendwo einen Kopierer haben. Wenn wir uns auf grundlegende Shell-Befehle beschränken, ist die einzige Wahl tee
. Wir müssen also die Eingabe (einen Dateibaum) in einen Stream tee
konvertieren , den Stream an einen Stream weitergeben und jeden Ausgabestream zurück in einen Dateibaum konvertieren. Das Werkzeug dafür ist ein Archivierer. Die Komprimierung von etwas, das im Speicher verbleibt, ist eine Verschwendung tar
. Verwenden wir also einfach .
Mit Pipes ( command0 | command1
) können wir die Ausgabe eines Befehls in einen anderen Befehl einspeisen. Wir müssen die Ausgabe von tee
in zwei andere Befehle einspeisen, daher ist ein anderes Bash-Konstrukt nützlich: command1 >(command2)
Erstellt eine Pipe, die command1
als erster Befehl übergeben wird, anstatt zur Standardausgabe von zu werden command2
. (Schlagen Sie die Prozessersetzung im Bash-Handbuch nach.)
Hier ist der Befehl (ungetestet):
mkdir /media/disk0/copy_of_dvd /media/disk1/copy_of_dvd
cd /media/cdrom
tar cf - . | tee >(tar xf - -C /media/disk0/copy_of_dvd) | tar xf - -C /media/disk1/copy_of_dvd
*
mit dem erstentar
.tar: one_of_the_files_being_copied: File shrank by 131757636 bytes; padding with zeros
. Ideen?.
das ist etwas besser. Ich habe diese Fehlermeldung noch nie gesehen. Nachdem ich ein wenig gegoogelt habe, frage ich mich, ob es an einem Kopierschutzschema liegen könnte, das ich auf einigen DVDs gesehen habe: Die Dateisystemstruktur ist ungültig, wobei einige Dateien über den beanspruchten Umfang der DVD hinausgehen. Wenn Sie beidedu
unddf
auf der DVD ausführen , geben sie ungefähr die gleiche Größe an (letzte Zeiledu
, ganz links stehende numerische Spalte vondf
)?Eine Shell-basierte Lösung besteht darin, ein Terminal zu öffnen und Folgendes einzugeben:
Der Befehl
cp
dient zum Kopieren von Dateien und der-r
Switch kopiert alle Dateien rekursiv. Sie müssen das Verzeichnis eingeben, in dem sich Ihre DVD befindet (normalerweise/media/dvd
oder ähnlich), und die Stelle auf der Festplatte, an der Sie die Dateien haben möchten (dh/home/diego/mydvd
). Der&
sendet den ersten Prozess in den Hintergrund und Sie können sofort einen zweiten Befehl eingeben und ausführen.quelle
tee
Befehl wurde vor über 40 Jahren erfunden :-)Wie in Li Los Kommentar zur Antwort von qbi erwähnt, sind optische Laufwerke (CD, DVD usw.) die langsamste Art von Laufwerk. Daher möchten Sie den Lesevorgang auf dem DVD-Laufwerk minimieren. Die naheliegende Lösung wäre, die Daten von der DVD an einen Ort auf der Festplatte zu kopieren und sie dann von diesem Ort auf die andere Festplatte zu kopieren.
quelle