Ich versuche, ein großes Verzeichnis von einem Laufwerk auf ein anderes zu kopieren. Ich habe mich fälschlicherweise abgemeldet, bevor es fertig war, sodass nur ca. 80% der Dateien kopiert wurden. Ist es möglich, die verbleibenden Dateien zu kopieren, ohne von vorne zu beginnen?
23
cp -u
könnte sich nicht, da sie nur überprüft Zeitstempel, nicht die Größe ... Also Sie brauchen würdetouch
zuerst die Quelldateien , wenn Sie es benutzen . (Oder benutzen Sie einfachrsync
.)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:
(kopiert
from/
insto/
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"quelle
Was Sie wahrscheinlich eher wollen als
cp
in diesem Fall istrsync
.Kopieren Sie einfach eine Verzeichnisstruktur rekursiv an einen neuen Speicherort:
quelle
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.
quelle
Sie können auch alle Dateien erneut kopieren, bei jedem Überschreiben eine Bestätigung anfordern und die Frage dann automatisch mit Nein beantworten:
(Sie haben wahrscheinlich mehr Optionen verwendet, wie
-r
, also fügen Sie sie einfach hinzu, wiecp -pri /source /dest
...)quelle
Verwenden Sie den Befehl
rsync
mit den folgenden Optionen:quelle