Wie kann man nur geänderte Dateien effizient von einer Festplatte auf einen externen USB-Stick kopieren?

8

Ich habe ein Verzeichnis my_projects_linuxim Ubuntu-Dateisystem, das alle meine Arbeiten aus vielen Jahren enthält. Das Verzeichnis enthält Dateien, Unterverzeichnisse usw.

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 einen Befehl, der:

  1. Würde funktionieren 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. Bei einer Größe von my_projects_linux> 50 GB dauert das Kopieren mehr als eine Stunde, was zu langsam ist. In der Realität haben sich seit der letzten Sicherung oft nur wenige MB geändert, sodass theoretisch eine Kopie viel schneller erstellt werden kann.

Wie geht das?

Ich habe gegoogelt, dass cp mit der -uFlagge möglicherweise meinen Bedürfnissen entsprechen könnte. Würde das funktionieren (z. B. würde es Unterverzeichnisse von Unterverzeichnissen korrekt behandeln)?

Ist das Speichern des Dateisystems auf einer externen Festplatte eine geeignete Methode zum Sichern oder gibt es eine ausgefallenere Methode? Zum Beispiel mit einer Cloud? Beachten Sie, dass der schickere Weg einfach sein sollte, da er sonst die einfache Ausführung eines Shell-Befehls nicht überwiegt.

mercury0114
quelle
1
@ DavidFoerster Ich bin anderer Meinung. In Ihrem Link rsyncist bereits erwähnt und seine besondere Funktion des Überspringens einer bestimmten Liste wird diskutiert. Hier frage ich nur, wie man Dateien sichert. Ich habe zum Zeitpunkt der Veröffentlichung dieser Frage noch nichts von rsync gehört. Obwohl verwandt, denke ich nicht, dass diese Frage ein Duplikat ist.
mercury0114
Für die Cloud-Sache können Sie Folgendes überprüfen rclone: rclone.org --- es ist wie rsync, funktioniert aber mit (einigen) Clouds. Funktioniert gut mit Google Drive. Einmal eingerichtet, ist es nur ein Befehl.
Rmano
... und Sie können auch unisono überprüfen: askubuntu.com/questions/633673/… --- Ich benutze es seit Ewigkeiten und hatte nie einen Fehler.
Rmano
Ob die in der verknüpften Frage genannten Lösungen hier bereits diskutiert wurden, ist unerheblich. Fragen, die sich mit demselben zugrunde liegenden Problem befassen oder eine sehr ähnliche Reihe von Lösungen haben, sollten als Duplikate gekennzeichnet werden.
David Foerster

Antworten:

13

Sie beschreiben, wofür das entwickelt rsyncwurde. 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 Schwachsinn beim Networking, aber es macht auch Spaß, lokal zu arbeiten.
Im Wesentlichen brauchen Sie nur:

rsync -rtv /home/my_projects_linux /mounted_drive/my_projects_linux

Es gibt eine Tonne von Optionen zur Verfügung , sondern -rtvwird synchronisieren r ecursively, halten die t imecodes gleich, während sie v erbose über das, was er tut.

Oli
quelle
4
-aist Archivierungsmodus; es ist gleich -rlptgoD, was -rtaus der Antwort hervorgeht. Für die Frage von OP war keine Konsolenausgabe erforderlich, sodass Sie keine hinzufügen müssen, -vwenn Sie nicht möchten, dass Inhalte vorbeirollen.
Amedee Van Gasse
1
Angenommen, die mounted_driveenthält eine alte Datei, die nicht mehr im /home/my_projects_linuxVerzeichnis vorhanden ist. Entfernt der Befehl diese Datei vom Mounted_Drive?
mercury0114
1

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

Die Konfiguration ist absolut intuitiv und Sie können verschiedene Synchronisationsjobs speichern.

Es gibt auch einen ppa, der derzeit jedoch nicht die neueste Version für 14.04 enthält. So installieren Sie über ppa:

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

Um Ihre zweite Frage zu beantworten, ist eine ausgefallenere Art der Sicherung rdiff-backup.

rdiff-backup sichert ein Verzeichnis in einem anderen, möglicherweise über ein Netzwerk. Das Zielverzeichnis führt zu einer Kopie des Quellverzeichnisses, aber zusätzliche umgekehrte Unterschiede werden in einem speziellen Unterverzeichnis dieses Zielverzeichnisses gespeichert, sodass Sie vor einiger Zeit verlorene Dateien wiederherstellen können. Die Idee ist, die besten Funktionen eines Spiegels und einer inkrementellen Sicherung zu kombinieren. rdiff-backup behält auch Unterverzeichnisse, Hardlinks, Entwicklungsdateien, Berechtigungen, UID / GID-Besitz, Änderungszeiten, erweiterte Attribute, Acls und Ressourcengabeln bei.

Und wenn Sie wirklich Cloud-basiert werden möchten: Ich verwende CrashPlan mit einem kostenpflichtigen Abonnement. Dann müssen Sie nie mehr an manuelle Backups denken.

Amedee Van Gasse
quelle