Antworten:
Ich würde versuchen,
rsync -a /from/file /dest/file
Sie können auch andere Optionen verwenden --append
, z -P (--partial --progress)
. Weitere Informationen finden Sie unter man rsync .
Oder wenn Sie cp
dann verwenden, verwenden Sie cp -u
.
von man cp
:
-u, --update
copy only when the SOURCE file is newer than the destination file or when the destination file is missing.
cp -u
könnte sich nicht, da sie nur überprüft Zeitstempel, nicht die Größe ... Also Sie brauchen würde touch
zuerst die Quelldateien , wenn Sie es benutzen . (Oder benutzen Sie einfach rsync
.)
Für teilweise Dateiübertragungen ist dies cp
möglicherweise nicht das, was Sie benötigen.
Ich schlage vor, rsync
stattdessen zu verwenden. Selbst wenn die Übertragung fehlschlägt, können Sie den Befehl zu einem späteren Zeitpunkt einfach erneut ausführen. Dabei werden nur die fehlenden Dateien kopiert.
Beispiel:
$ rsync -aPEmivvz from/ to/
(kopiert from/
ins to/
Verzeichnis)
Da rsync
nach jeder Übertragung eine Synchronisierung und Überprüfung durchgeführt wird, ist es trivial, sicherzustellen, dass die Dateien korrekt kopiert wurden.
Der swich Satz -aPEmivvz
ist meine Standard - Go-to - Auswahl, wann immer das Kopieren von Dateien über Netzwerke oder externe Laufwerke, einschließlich Plug-in Geräten wie SD-Karten etc.
Dies sind die Schalter, die ich fast immer benutze:
-a
: "Archiv", enthält -rlptgo
(rekursiv, Symlinks als Symlinks, Berechtigungen, Zeiten, Gruppe, Besitzer)
-P
: "Teilfortschritt" zeigt einen schönen Fortschrittsbalken für jede Datei
-E
: "Ausführbarkeit" erhalten, ob ausführbar oder nicht
-m
: "noempty" schneidet leere Verzeichnisse ab
-i
: "Zusammenfassung" Änderungsübersicht für alle Aktualisierungen drucken
-vv
: "ausführlicher"
-z
: "Kompression"
Sie sollten dafür nicht verwenden cp
. Wie andere gesagt haben, ist es nicht das richtige Werkzeug für den Job. Das richtige Werkzeug wird von Ihren Zielen abhängen.
Wenn Sie nur eine gerade Kopie möchten:
rsync /source /destination
mit einigen Ebenen von Flags. In den anderen Antworten finden Sie einige wirklich gute Beispiele.
Wenn Sie bidirektionale Updates wünschen
unison
ist der Weg zu gehen. Rsync ist bei der Konfliktlösung mit bidirektionalen Synchronisierungen nicht besonders gut. Wird speziell gelöscht. Sie möchten also, dass bidirektionale Kopien ausgelöst werdenunison
Wenn Sie Sicherungskopien erstellen möchten und die Dateien textbasiert sind, können Sie versuchen, sie zu verwenden git
. Git kann lokal ausgeführt werden, es wird kein "Server" benötigt. Git-Server sind eigentlich nur Dateifreigabemethoden. Sie könnten ein Git-Repo auf dem Backup-Laufwerk haben und es "pushen". Auch dies funktioniert nur dann wirklich, wenn die Dateien textbasiert sind und Sie versuchen, eine Einweg-Sicherung zu erhalten.
Wenn Sie erneut ein Backup anstreben (und nicht nur ein einziges Mal), schauen Sie sich Deja-Dupe, BackIntime oder ähnliche Optionen an. Sie machen zu einem bestimmten Zeitpunkt Schnappschüsse der Daten. Sie laufen alle unter der Haube rsync.
Sie können auch alle Dateien erneut kopieren, bei jedem Überschreiben eine Bestätigung anfordern und die Frage dann automatisch mit Nein beantworten:
yes n | cp -i /source /dest
(Sie haben wahrscheinlich mehr Optionen verwendet, wie -r
, also fügen Sie sie einfach hinzu, wie cp -pri /source /dest
...)