Verwenden von Rsync zum Sichern auf einem externen Laufwerk


17

Ich kaufe eine externe Festplatte, um die Computer in meinem Haus zu sichern (endlich !!). Ich hoffe, rsync zu verwenden. Ich habe ein Beispiel gesehen, das genau das tut (oder zu tun scheint), was ich will. Etwas wie das:

rsync -aE --delete /path/to/what/I/want/to/backup /Volumes/FW200/Backups

Bei der Betrachtung der rsync-Dokumentation, der Beispiele usw. wurden die Dinge jedoch VIEL komplizierter. Vernetzung und Dämonen und Jargon, oh mein Gott!

Ich gehe davon aus, dass nichts davon notwendig ist, solange ich nur von einem Computer auf ein mit Firewire verbundenes externes Laufwerk synchronisiere. Ich bin ich falsch in der Annahme, dass? Werden die Dinge wirklich komplizierter als dieser harmlose Befehl?


Antworten:


9

Rsync funktioniert problemlos auf lokalen Laufwerken. Wenn es jedoch lokale Pfade erkennt, wechselt es automatisch in den --whole-file-Modus, in dem die Unterschiede nicht kopiert werden, sondern nur die Quelldatei über die Zieldatei kopiert wird. Rsync ignoriert dennoch Dateien, die sich überhaupt nicht geändert haben. Wenn die Bandbreite zwischen Quelle und Ziel hoch ist (wie bei zwei lokalen Festplatten), ist dies viel schneller als das Lesen beider Dateien und das Kopieren nur der geänderten Bits.


2
s / Jedoch / Zum Glück / Wenn Dateien lokal sind, ist das Lesen beider Dateien und das Ausführen der Diff-Magie, um das Neue mit Teilen von beiden zu schreiben (sie erneut zu lesen), viel mehr Arbeit als nur das Lesen der Quelle, das Schreiben des Ziels.
Javier

Ich wusste nicht, ob ich in meiner Antwort darauf eingehen sollte. Ich werde es jetzt hinzufügen.
kbyrd

31

Ich benutze rsync mit den folgenden Flags, die man sich leicht merken kann: 'glop' und 'trunc' und 'v'.

rsync -gloptrunc $srcdir $dstdir

Eine kurze Anleitung:

  • g - Gruppeneigentumsinformationen beibehalten
  • l - Symlinks als Symlinks kopieren
  • o - Besitzerinformationen beibehalten
  • p - Berechtigungen beibehalten
  • t - Zeitstempel erhalten
  • r - Durchsuchen von Verzeichnissen
  • u - update, überspringe alle neueren Dateien
  • [n] - nein, mach das nicht, mach stattdessen einen Trockenlauf
  • c - Prüfsumme, versuchen Sie, wenn möglich, Prüfsummen für Dateiblöcke (*).
    Hinweis: Auf lokalen Dateisystemen wird dies überschrieben und stattdessen werden ganze Dateien kopiert.
  • v - ausführlich

Ich führe immer die obigen Schritte aus, um sicherzustellen, dass es funktioniert, und entferne dann das 'n'-Flag, wenn ich mit den Ergebnissen zufrieden bin.

Die Hauptmerkmale der obigen Kombinationen:

  • Ich führe es in BEIDEN Richtungen zwischen zwei (oder mehr) Servern aus und synchronisiere es somit in BEIDEN Richtungen. Sie aktualisieren, was immer Sie für den Meister halten.
  • Es erlaubt entweder, der Meister zu sein, mit der erheblichen Einschränkung, dass Sie etwas löschen müssen, wenn Sie es löschen möchten, um sicherzugehen, dass es wirklich weg ist, sonst kommt es zurück.

Ich verwende dies, um zwei Computer synchron zu halten oder um Subdirs synchron zu halten (wie das Sichern auf einem USB-Laufwerk).

Wie bereits erwähnt, kann die Prüfsumme tatsächlich auf AUS gesetzt werden, wenn Sie sich mit lokalen Laufwerken befassen.

In einigen seltenen Fällen musste ich zusätzliche Parameter hinzufügen, um Änderungen an Anmeldekonten auf Remotecomputern zu berücksichtigen, Ports zu ändern und sogar anzugeben, wo sich 'rsync' auf dem Remotehost befindet Frage.


3
Tut das -a-Flag für rsync nicht alles, was oben steht?
Rory

2
Ich bin kein großer Fan von "Meta" -Flaggen, wenn ich nicht genau weiß, was sie tun. Das Manapage für rsync gibt an, dass '-a' tatsächlich -rlptgoD auf meiner Box ist, was 'u' und 'v' überspringt, aber 'D' enthält. Von diesen scheint mir die Hinzufügung von 'u' der einzige entscheidende Unterschied zu sein.
Ericlaw

Wie erzwinge ich das Spiegeln von Quelle zu Ziel (Löschen von Elementen im Ziel, die sich nicht in der Quelle befinden), anstatt bidirektional zu kopieren?
Gabriel Staples

1
Sieht so aus, als müssten Sie verwenden rsync -gloptrunc --delete --delete-excluded $srcdir $dstdir. Das --deletesagt, alles im Ziel zu löschen, das nicht in der Quelle ist, und --delete-excludedsagt, auch ausgeschlossene Dateien im Ziel zu löschen, die normalerweise nicht verfolgt oder kopiert würden. Wenn Sie verwenden --delete-excluded, müssen Sie technisch nicht auch verwenden --delete, aber es ist in Ordnung, sie beide trotzdem zu verwenden. Details finden Sie auf den Manpages hier: linux.die.net/man/1/rsync .
Gabriel Staples

Hinweis: Für die allgemeine Verwendung von Rsync habe ich dieses Tutorial jetzt auch für mich selbst geschrieben, damit ich es nach Bedarf referenzieren kann: So verwenden Sie Rsync
Gabriel Staples

4

Nichts davon ist notwendig, Sie können rsync ohne Dämonen oder andere Konfigurationen verwenden. JUST FINE!

Verwenden Sie einfach den Befehl rsync und Sie können loslegen.


2

Nach dem Pfad in Ihrem rsync-Befehl zu urteilen, würde ich denken, dass Sie Mac OS X verwenden?

Persönlich würde ich mich für Time Machine (wenn Sie Leopard verwenden) oder Carbon Copy Cloner ( http://www.bombich.com/software/ccc.html ) entscheiden, das rsync verwendet.

Viel einfacher als zu versuchen, das eigene Skript zu korrigieren. Ein Vorteil ist, dass Time Machine und CCC Ihnen inkrementelle Backups liefern.


2

Das Beispiel, das Sie verwendet haben, scheint für Backups gut zu funktionieren.

Eine Sache, die Sie bei der Verwendung von rsync beachten sollten, ist die Verwendung der Option --link-dest. Auf diese Weise können Sie mehrere Sicherungskopien erstellen, für unveränderte Dateien jedoch feste Verknüpfungen verwenden, sodass alle Sicherungskopien den Platz eines inkrementellen Backups einnehmen. Ein Beispiel wäre:

rsync -aE --link-dest=/mnt/external_disk/backup_20090612 dir_to_backup \
    /mnt/external_disk/backup_20090613

Dies setzt voraus, dass Sie ein datiertes Backup für den 12. Juni haben und am 13. Juni ein neues erstellen möchten. Sie können die Option -v weglassen, wenn Sie nicht alle Dateien ausdrucken möchten.


1
rsnapshot ist ein Backup-System, das Link-Dest verwendet, um Vollversions-Backups platzsparend zu speichern.
Rory

1

Es hängt wirklich davon ab, ob Sie Datenbanken ausführen oder nicht. Rsync erstellt einen Schnappschuss jeder Datei und ignoriert alle zwischenzeitlichen Schreibvorgänge. Wenn Sie eine Datenbank sichern möchten, sollten Sie vor dem rsync einen Ignorierfilter einrichten und DB-Dump-Tools ausführen.


1

Ihr geschriebener Befehl sollte funktionieren, Sie sollten sich jedoch ein Programm mit dem Namen rsnapshot ansehen, das auf rsync aufbaut und mehrere Versionen von Dateien enthält, damit Sie zurückgehen und sich die Dinge ansehen können, die letzte Woche oder letzten Monat vorlagen. Die Konfiguration ist ziemlich einfach und bei der Speicherplatzoptimierung sehr gut. Wenn Sie also nicht viel Zeit haben, beansprucht sie nicht viel mehr Speicherplatz als ein einzelnes Backup.


1

Sie haben Ihr Betriebssystem nicht erwähnt. Unter der Annahme, dass das Betriebssystem auf * nix basiert, ist Ihr Befehl gut.

Wenn jedoch zufällig eines oder beide Laufwerke mit NTFS formatiert sind und von * nix oder sogar von Windows mit Mobaxterm / cygwin aus zugegriffen wird, funktioniert die inkrementelle rsync-Funktionalität nicht gut rsync -a (archive flag)

Wenn NTFS-Laufwerke beteiligt sind, können Sie Folgendes verwenden:

rsync -rvh --size-only --delete /path/to/what/I/want/to/backup /Volumes/FW200/Backups

Laden Sie den Mobaxterm ssh-Client herunter, um die rsync-Funktionalität unter Windows zu nutzen.

Hier finden Sie weitere Informationen zur Verwendung von rsync mit NTFS-Laufwerken


0

Ich habe versucht, rsync für die Sicherung zu verwenden, aber es war ein Durcheinander. rsync eignet sich eher zum Synchronisieren als zum Sichern. Und es ist eine Ewigkeit, große Dateien zu vergleichen.

Ich habe ein bisschen recherchiert und mehrere ausprobiert (im Grunde genommen testete ich jeden von apt-cache search backup in Ubuntu).

Endlich bin ich bei " backup2l - wartungsarmes Backup / Restore-Tool" angelangt , es ist ganz einfach. Mir gefällt die Art und Weise, wie Planung und Rotation (in Ebenen) verwaltet werden. Ich führe es immer dann aus, wenn ich mein externes USB-Laufwerk über die Befehlszeile angeschlossen habe, aber Sie können es auch automatisieren.


0

Versuche dirvish, um das Backup zu machen. http://www.dirvish.org/
Es verwendet die Hardlinks von rsync in den sogenannten Tresoren. Sie können so viel von Ihren älteren Dumps behalten, wie das USB-Laufwerk aufnehmen kann. Oder richten Sie es automatisiert ein.

Sobald Sie die Idee von dirvish verstanden haben, ist es praktischer, rsync mit all seinen Optionen selbst zu verwenden.


rsnapshot funktioniert ähnlich wie dirvish
Rory

0

Ich finde eine Lösung für Windows-basierte Computer: http://www.itefix.no/i2/node/10650

So kopieren Sie D: \ Partition auf ein externes Laufwerk K: \

rsync -aE --delete --progress /cygdrive/d/* /cygdrive/k

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.