Ich habe ein Verzeichnis namens my_projects_linux
im 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:
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.
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 -u
Flag 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 rsync
es 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 -rtv
die 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