Ich muss einen Ordner / home / user von einer Festplatte auf eine andere kopieren. Es hat 100.000 Dateien und eine Größe von ca. 10 GB.
ich benutze
cp -r /origin /destination
Manchmal erhalte ich einige Fehler, die auf kaputte Links, Berechtigungen usw. zurückzuführen sind. Also behebe ich den Fehler und muss den Kopiervorgang erneut starten.
Ich frage mich, wie ich dem Befehl "cp" mitteilen kann, wenn er versucht, erneut zu kopieren, Dateien nicht erneut zu kopieren, wenn sie im Zielordner vorhanden sind.
Antworten:
cp -R -u -p /source /destination
Das
-u
( oder--update
) Flag macht genau das:Von der Manpage für cp:
quelle
yes n | cp -i /source/* /destination 2>/dev/null
Verwenden Sie einfach
cp -n <source> <dest>
.Aus der Manpage :
quelle
rsync -aq /src /dest
Abgesehen davon, dass nur neuere Dateien kopiert werden, werden auch nur die neueren Teile von Dateien kopiert, wenn sich die Datei geändert hat. Es ist für das Kopieren über Netzwerkverbindungen gedacht, bei denen Sie die Datenmenge minimieren möchten - es funktioniert jedoch auch hervorragend lokal.
quelle
Suchen Sie nach der Option "-u" für den
cp
Befehl.quelle
Alle obigen Antworten sind korrekt, aber wenn Sie dies rekursiv tun, dann
du solltest tun:
quelle
Sie sollten als root kopiert werden, um Berechtigungen / Eigentumsrechte zu erhalten
Schauen Sie sich auch rsync an
quelle
POSIX-Lösung
Andere Antworten verwenden
-u
oder-n
Optionen voncp
. Beides wird von POSIX nicht benötigt . noch istrsync
von noch einer anderen Antwort; noch wirdyes
in einem der Kommentare verwendet.Trotzdem können wir
yes n
mit einerwhile
Schleife reproduzieren . Dies führt zu folgender POSIX-Lösung:quelle
Verwenden
cp -rn <sourcedirname>/. <destdirname>
Mit der Option r wird die Kopie über die Verzeichnisse rekursiv.
Der Schalter n (lange Version no-clobber) stellt sicher, dass vorhandene Dateien niemals überschrieben werden.
Das '
/.
' nach dem Sourcedirname stellt sicher, dass es nicht zu einem Unterverzeichnis unter dem Zielverzeichnis wird, anstatt dass der gesamte Inhalt des ersteren in das letztere kopiert wird.quelle