Wie kopiere ich nur geänderte Dateien effizient von einer Festplatte auf einen externen USB-Stick?

Wie kopiere ich nur geänderte Dateien effizient von einer Festplatte auf einen externen USB-Stick?

Ich habe ein Verzeichnis namens my_projects_linuxim Ubuntu-Dateisystem, das meine gesamte Arbeit aus vielen Jahren enthält. Das Verzeichnis enthält Dateien, Unterverzeichnisse und so weiter.

Zu Sicherungszwecken kopiere ich dieses Verzeichnis und seinen gesamten Inhalt gelegentlich auf eine externe Festplatte.

Daher sieht der Inhalt meines externen Laufwerks folgendermaßen aus:

/mounted_drive/my_projects_linux
/mounted_drive/my_projects_windows  # the same idea to backup Windows work

Daher suche ich nach einem Befehl, der:

  1. Funktioniert als

    cp /home/my_projects_linux /mounted_drive/my_projects_linux
    

    Es sollte alte Dateien, Unterverzeichnisse, Dateien in Unterverzeichnissen usw. auf der externen Festplatte durch den neuen Inhalt von meinem PC ersetzen.

  2. Sei schnell. Es sollten nur geänderte oder neu erstellte Dateien kopiert werden. Da die Größe my_projects_linux>50 GB beträgt, dauert das Kopieren von allem mehr als eine Stunde, was zu langsam ist. In Wirklichkeit haben sich seit dem letzten Backup oft nur wenige MB geändert, sodass eine Kopie theoretisch viel schneller erstellt werden kann.

Wie geht das?

Ich habe gegoogelt, dass cp mit dem -uFlag möglicherweise meinen Anforderungen entspricht. Würde das funktionieren (würde es beispielsweise Unterverzeichnisse von Unterverzeichnissen korrekt verarbeiten)?

Ist das Speichern des Dateisystems auf einer externen Festplatte eine geeignete Methode zum Erstellen einer Sicherung oder gibt es eine ausgefallenere Methode? Zum Beispiel die Verwendung einer Cloud? Beachten Sie, dass die ausgefallenere Methode einfach sein sollte, da sie sonst nicht mit der Einfachheit der Ausführung eines Shell-Befehls mithalten kann.

Antwort1

Sie beschreiben sozusagen, wofür rsynces entwickelt wurde. Von man rsync:

   Rsync  finds  files  that  need to be transferred using a "quick
   check" algorithm (by default) that looks  for  files  that  have
   changed  in  size  or in last-modified time.  Any changes in the
   other preserved attributes (as requested by options) are made on
   the  destination  file  directly  when the quick check indicates
   that the file’s data does not need to be updated.

Es gibt auch viel Geschwätz über das Netzwerken, aber es ist auch gut, lokal zu arbeiten.
Im Wesentlichen brauchen Sie nur:

rsync -rtv /home/my_projects_linux /mounted_drive/my_projects_linux

Es gibt eine Menge Optionen, aber -rtvdie Synchronisierung erfolgtRekursiv, wobei dieTimecodes gleich, währendgegenerbose darüber, was es tut.

Antwort2

Um Ihre zweite Frage zu beantworten: Eine elegantere Möglichkeit zum Sichern ist rdiff-backup.

rdiff-backup sichert ein Verzeichnis in einem anderen, möglicherweise über ein Netzwerk. Das Zielverzeichnis wird zu einer Kopie des Quellverzeichnisses, aber zusätzliche Reverse-Diffs werden in einem speziellen Unterverzeichnis dieses Zielverzeichnisses gespeichert, sodass Sie vor einiger Zeit verloren gegangene Dateien immer noch wiederherstellen können. Die Idee besteht darin, die besten Funktionen eines Spiegels und einer inkrementellen Sicherung zu kombinieren. rdiff-backup bewahrt auch Unterverzeichnisse, Hardlinks, Entwicklungsdateien, Berechtigungen, UID-/GID-Eigentümerschaft, Änderungszeiten, erweiterte Attribute, ACLs und Ressourcenzweige auf.

Und wenn Sie wirklich Cloud-basiert arbeiten möchten: Ich verwende CrashPlan mit einem kostenpflichtigen Abonnement. DannniemalsSie müssen sich keine Gedanken mehr über manuelle Backups machen.

Antwort3

Ich weiß, dass es für diese Frage bereits eine akzeptierte Antwort gibt. Ich wollte jedoch eine plattformübergreifende GUI-Lösung hinzufügen, da ich sehe, dass Sie auch Windows verwenden. Ich verwende für die gleichen ZweckeKostenlose Dateisynchronisierung. Es ist auch FLOSS.

Die Konfiguration ist absolut intuitiv und Sie können verschiedene Synchronisierungsaufträge speichern.

Es gibt auch ein PPA, allerdings enthält es derzeit nicht die neueste Version für 14.04. So installieren Sie es über PPA:

sudo apt-add-repository ppa:freefilesync/ffs
sudo apt-get update

verwandte Informationen