Verwenden von rsync zum Sichern

13

Ich sichere derzeit den Inhalt einer externen Festplatte A, indem ich (1) alles auf der externen Zielfestplatte B lösche und (2) alles von A nach B kopiere (im Finder). Die externe Festplatte enthält nur „Basisdaten“ (Ordner, Bilder, Videos, Dokumente usw.), nichts Besonderes.

Aber mit all den erstaunlichen kostenlosen Tools, die es gibt, konnte ich kein anständiges Backup finden (Vorschläge akzeptiert).

Ich möchte das automatisieren. Nach ein paar Suchen scheint es, dass ich verwenden kann rsync. Ich möchte dies dann automatisieren, indem ich rsyncvermeide, Dateien zu kopieren, die sich bereits auf der Zielfestplatte befinden (wenn eine Änderung vorgenommen wurde, möchte ich natürlich die Datei / den Ordner aktualisieren, ebenso wie gelöschte Dateien / Ordner oder neue Dateien / Ordner; die Idee ist, nachzuahmen, was ich normalerweise manuell mit Finder mache).

Ich bin an diesem Punkt angelangt

rsync -av --progress --delete /Volumes/A/ /Volumes/B

Jetzt ist das Protokoll voll von Dateien, deren Name mit .oder ._oder sogar beginnt ._.. Sind sie notwendig?

Frage

Wie kann ich nur die wichtigen Dateien kopieren und alle wichtigen Dateien zurücklassen? Wenn ich zum Beispiel habe, würde ich photo.pngerwarten photo.png, nicht ._photo.pngoder viele Dateien zu kopieren .

Was --excludeoder --exclude-fromkann sicher auf einem Mac verwendet werden? Möglicherweise lautet eine gute Regel: "Kopieren Sie einfach alles, was der Finder anzeigt". Dies würde ich kopieren, wenn ich alle Ordner manuell durchlaufen würde.

 Zusätzliche Frage

Ist -av --progress --deletegenug Begehen ich ein Verbrechen oder riskiere ich Daten? Welche Optionen würden Sie verwenden?

Bitte unterstützen Sie Ihre Antwort mit einigen Argumenten, ich würde es begrüßen.

Ich suche nach einer Möglichkeit zur Automatisierung, rsyncdie sehr leistungsfähig und kostenlos zu sein scheint.

Manuel
quelle
Kommentare sind nicht für eine ausführliche Diskussion gedacht. Dieses Gespräch wurde in den Chat verschoben .
bmike
Was passiert bei der im ersten Absatz beschriebenen Strategie, wenn nach (1) - Löschen von allem in B - A ein ernstes Problem auftritt? Sie könnten den Zugriff auf Daten in A und in der vorherigen Sicherung verlieren. Wenn Ihr Sicherungsspeicher über genügend Speicherplatz verfügt, können Sie die Sicherung erst löschen, nachdem eine neuere Sicherung erfolgreich abgeschlossen wurde.
Ricardo
1
Der Link von @ bmike zu der Konversation, die in den Chat verschoben wurde, ist unterbrochen.
Merchako

Antworten:

17

Kopieren Sie für maximale Sicherheit alles

Am sichersten ist es, alles zu kopieren , einschließlich unsichtbarer Metadatendateien.

Dateien existieren in der Regel aus einem bestimmten Grund und wenn sich die Software ändert, werden auch Existenz, Zweck und Inhalt dieser Metadatendateien geändert. Wenn Sie alles kopieren, wird der Wartungsaufwand verringert und Sie können sicher sein, dass nichts verloren geht.

Die von erstellte Protokolldatei rsyncist technisch von Natur aus rsyncein Befehlszeilentool. Erwägen Sie, eine aufgeräumte, nach Metadaten gefilterte und möglicherweise sogar farbcodierte Ausgabe zu präsentieren, die der Benutzer überprüfen kann. Sie können dies mit einer Vielzahl von Skriptwerkzeugen und -sprachen tun. Bitte stellen Sie hier weitere Fragen zu Ask Different und zu StackOverflow, wenn Sie Hilfe bei diesem Ansatz benötigen.

Letzte X X-Ressourcen löschen und kopieren

rsyncSchauen Sie sich in Bezug auf die Flags die Frage an. Schnellster und sicherster Weg, um massive Daten von einem externen Laufwerk auf ein anderes zu kopieren . In dieser Frage werden einige zusätzliche Flags verwendet und erläutert:

sudo rsync -vaE --progress --delete-after /Volumes/SourceName /Volumes/DestinationName

In dieser Situation Ewird sichergestellt, dass Ressourcengabeln und andere Mac-spezifische Eigenschaften kopiert werden.

Möglicherweise möchten Sie --delete-afterdas Löschen vermeiden, bis die Kopie fertig ist. Bitte beachten Sie, dass für diesen Ansatz möglicherweise ein Ziellaufwerk erforderlich ist, das doppelt so groß ist wie die Quelle.

Mögliche Ausschlüsse

Eine Antwort auf eine verwandte Frage: Wie kann ich FCPX-Renderdateien aus einer Time Machine-Sicherung weglassen? , stellte einen nützlichen Link zu OS X-Dateien und -Ordnern bereit , der von den meisten Sicherungen ausgeschlossen werden kann . Dieser Link enthält eine praktische Liste von Dateimustern, Ordnern und Pfaden, die Sie ausschließen können.

Punktdateien einschließen

Es gibt gute Gründe, Dateien zu sichern, die mit Punkten beginnen und mit .*Dateien übereinstimmen.

Einige Programme speichern Einstellungen, Einstellungen und andere wertvolle Informationen in Ordnern oben im Ordner des Benutzers in Ordnern mit unsichtbaren Punktpräfixen. Beim Ausführen ls -la ~/werden diese Ordner und Dateien angezeigt.

Wenn ein Benutzer Software verwendet oder hat, die wiederum Versionskontrollsoftware verwendet, müssen Sie Punktdateien sichern. Software wie Subversion und Git speichern wichtige Informationen in ihren Punktordnern. Diese versteckten Ordner können über Ihr Dateisystem verteilt sein, wo immer ein Projekt ausgecheckt wird.

Spotlight und Festplattenzugriff

Spotlight ist der Suchdienst von OS X. Spotlight verwendet den mdworkerProzess zum Indizieren und Aktualisieren des Suchkatalogs. Wenn Sie Bedenken hinsichtlich einer möglichen Beschädigung der Festplatte oder langsamer Kopien haben, kann das Deaktivierenmdworker während der Ausführung rsynchilfreich sein. Persönlich lasse ich Spotlight laufen, während große rsyncÜbertragungen ausgeführt werden.

Graham Miln
quelle
3
Am sichersten ist es, alles zu kopieren, einschließlich unsichtbarer Metadatendateien. Der gleiche Link von Carbon Copy Cloner besagt jedoch, dass bestimmte Dateien automatisch erstellt werden, sodass sie beim Kopieren möglicherweise sogar beschädigt werden rsync.
Manuel
1
Sie könnten ein vollständiges Beispiel für zukünftige Leser hinzufügen. Ich habe zwei Quellen gefunden, eine und zwei (plus die dritte , die Sie verlinkt haben); Ich lasse sie hier zum späteren Nachschlagen.
Manuel
1
"Es gibt gute Gründe, Dateien zu sichern, die mit Punkten beginnen": ja! Diese Dateien sind ausgeblendet (im Finder für die Dummies), aber meistens handelt es sich um sehr wichtige Dateien.
Dan
1
Das Eund --delete-aftersind die wichtigsten Punkte, die diese Antwort zu einem Gewinn machen.
Dan
1
@danielAzuelos Ab -E, in neueren Versionen gibt es, -Xdie ich an einigen Stellen empfohlen sehe, welche ist die richtige? Oder beide? Ich hätte gerne ein aktuelles Pseudo-Komplett, das die meisten allgemeinen Sorgen abdeckt. Wäre das Kopieren von Spotlight-Dateien einfacher und schneller als das Generieren? Wie kann ich Spotlight stoppen, damit es in der Zwischenzeit nicht durcheinander kommt? Was ist mit caffeinatedem Prozess? Oder wenn es sich nur um eine Sicherungsliste handelt, kann sie von Spotlight nicht indiziert werden, viel weniger Sorgen usw. Viele dieser Fragen wurden mit Sicherheit beantwortet.
Manuel
5

Wenn Sie rsyncVersion 3.0.6 gemäß Carbon Copy Cloner oder 3.1.2 gemäß Homebrew verwenden, können Sie sich an den Argumenten von Carbon Copy Cloner orientieren:

rsync -A -X -H -p --fileflags --force-change -l -N -rtx --protect-decmpfs --numeric-ids -go --delete-during --backup --backup-dir=</PATH/TO/STICK/BACKUP_when_using_delete> --protect-args <SRC>/ <DEST>

ylluminate
quelle
--protect-decmpfsist ab 3.1.3 nicht mehr verfügbar, siehe github.com/Homebrew/homebrew-core/pull/23415 .
user74686
4

Ich würde davon abraten, Metadaten während einer Sicherung zu bereinigen, insbesondere die Punktedateien, z. B. ._$filenamewenn Sie die Punktedateien wirklich von Ihrem rsyncBefehl ausschließen möchten, fügen Sie --exclude '.*'sie hinzu.

rsync -av --exclude '.*' --progress --delete /Volumes/A/ /Volumes/B
user3439894
quelle
Das ist gut. Ich war mir nicht sicher, ob das Entfernen aller Punktdateien problematisch wäre (gibt es übrigens einen Unterschied zwischen '.*'und '/.*'?). Ich glaube nicht, dass Finder alle kopiert, vielleicht nur einige davon. In diesem Fall würde ich es vorziehen, nur diejenigen auszuschließen, die unnötig sind (z .DS_Store. B. ). Und ja, diejenigen, die wichtig sein könnten, die ich aber nicht in meinem Protokoll haben möchte, kann ich mit regulären Ausdrücken filtern.
Manuel
1
Was der Finder kopiert, ist nicht dokumentiert, und dies ist die Ursache für alle Probleme beim Erstellen einer Sicherungsrichtlinie. Sie sollten eine Kopie aller Dateien aufbewahren, wenn Sie eine Sicherung wünschen, die genau anstelle der AFestplatte verwendet werden kann.
Dan
@danielAzuelos Was nicht der Fall ist, falls die Hauptfestplatte A ausfällt, kaufe ich eine dritte Festplatte C, kopiere sie von Festplatte B auf Festplatte C und verwende wahrscheinlich eine von B oder C. Ich sage noch einmal: dass dies nicht die Art von Backup ist, die man verwenden muss, wie es SuperDuper tut. Es ist nur so, dass meine Fotos an zwei Stellen besser sind als nur an einer.
Manuel
4

Ich bin mit den aktuellen Antworten nicht ganz zufrieden, aber ich werde versuchen, hier einige der Möglichkeiten zu behandeln, die ich im Internet gesehen habe, um ein gutes Setup für zu finden rsync.

Übrigens, wenn man sich für Time Machine wie Kopien interessiert, gibt es rsnapshot. Und es gibt auch Unison für bidirektionale Synchronisationen. Außerdem gibt es tatsächlich einige GUIs wie Backup Utility und arRsync . nicht genau das, wonach ich gesucht habe, aber sie könnten den Job für jemanden machen.

Erstens war meine einzige Absicht, Fotos und Videos zu duplizieren, sodass keine exakte Kopie erforderlich war, sodass ich mich nicht zu sehr darum kümmern musste . Tatsächlich waren die meisten meiner Zweifel, ob ich alles ausschließen könnte (dasselbe, was passieren würde, wenn ich beispielsweise ein Foto aus dem Internet heruntergeladen hätte, ich habe nur eine PNG-Datei heruntergeladen, alles andere wird nicht heruntergeladen, sondern automatisch generiert ).

Hier ist eine unstrukturierte Liste von Gedanken, die Sie möglicherweise berücksichtigen möchten

  • Wenn Sie sicherstellen möchten, dass Ihr Laptop nicht in den Ruhezustand wechselt, möchten Sie möglicherweise caffeinateden Vorgang ausführen caffeinate -s rsync -av .... Von hier genommen .

  • Wenn Sie lokale Kopien erstellen, wie in meinem Fall, oder wenn die Internetverbindung nicht zu langsam ist, sollten Sie nicht die -zOption (Komprimierung) und verwenden -W(ganze Datei übertragen, anstatt Delta-Übertragungen; dies ist eine Standardeinstellung, wenn lokal). und wahrscheinlich verwenden --inplace, um Überweisungen schnell zu machen. Von hier genommen .

  • Sie können verwenden, --delete-afterdamit jede Datei zuerst übertragen und dann am Ziel verschoben (und die ursprüngliche gelöscht) wird. Dies ist sicherer als das Löschen vor der Übertragung oder während der Übertragung.

  • Sie können die Übertragung durch Drücken von ctrl + Cstoppen und sie wird sauber gestoppt. Von hier genommen . Dies war eine meiner Befürchtungen bei SuperDuper!. Wenn Sie eine Übertragung stoppen müssen, wird die Meldung "Sie werden die Festplatte in einem unbekannten Zustand belassen ..." angezeigt.

  • In neueren Versionen gibt es --info=progress2noch mehr Details -v.

  • Es gibt -P(was gleich --partialund ist --progress), die Dateien in der Mitte der Übertragung dort belassen, sodass Sie beim Neustart des Prozesses weitermachen können (wenn Sie die Synchronisierung aus irgendeinem Grund nicht sofort beenden können).

  • Möglicherweise möchten Sie Spotlight oder TimeMachine vor dem Kopieren stoppen und nach der Übertragung wieder aktivieren. Und deaktivieren Sie sogar Spotlight für die externe Festplatte.

  • Andere Optionen , die in all den Referenzen gehören -x(oder --one-file-system), -E( --executability), -H( --hard-links), -X( --xattrs), -A( --acls), und --sparse, --hfs-compression, --protect-decmpfs. Vielleicht möchten Sie sie sich ansehen.

Für mich sieht ein grundlegender Befehl so aus (ich könnte mehr Optionen verwenden, aber dies reicht für ein Beispiel):

caffeinate -s rsync -av --delete-after --progress --stats --exclude-from 'excludefile.txt' \
  "/Volumes/SrcHDD/" "/Volumes/DstHDD" # note the trailing slash / after the source

In meinem Fall könnte ich nur einschließen {*.jpg,*.png,*.mp4,*.txt,*.pdf,…}und niemand würde sagen "Sie brauchen auch Systemdateien", aber da ich nicht suchen möchte, um alle möglichen Dateitypen zu erhalten, von denen ich Dateien habe, ziehe ich es vor, sie auszuschließen. Und es gibt Dinge, die nicht nur ausgeschlossen werden können, sondern auch bequem erscheinen .

Ich habe ein paar Links gefunden, nimm was du willst:

  1. https://bombich.com/kb/ccc4/some-files-and-folders-are-automatically-excluded-from-backup-task

  2. https://gist.github.com/tvwerkhoven/4541989

  3. https://github.com/necolas/dotfiles

  4. https://gist.github.com/shkm/5531679

  5. http://www.hackurmac.com/2014/08/backing-up-and-restoring-your-hackintosh.html

  6. https://github.com/jedda/Counterpart

  7. http://alanwsmith.com/rsync-exclude-list-for-mac-osx

Und von dort könnten Sie wahrscheinlich bekommen, was sicher oder vernünftig ist, um es zu ignorieren. Hier ist die vollständige Liste (ich habe gerade Duplikate entfernt)

.HFS+ Private Directory Data*
/.journal
/.journal_info_block
.AppleDouble
.AppleDB
/lost+found

.metadata_never_index
.metadata_never_index_unless_rootfs
/.com.apple.timemachine.donotpresent
.VolumeIcon.icns
/System/Library/CoreServices/.disk_label*
/TheVolumeSettingsFolder

.DocumentRevisions-V100*
.Spotlight-V100
/.fseventsd
/.hotfiles.btree
/private/var/db/systemstats

/private/var/db/dyld/dyld_*
/System/Library/Caches/com.apple.bootstamps/*
/System/Library/Caches/com.apple.corestorage/*
/System/Library/Caches/com.apple.kext.caches/*

/.com.apple.NetBootX

/Volumes/*
/dev/*
/automount/*
/Network/*
/.vol/*
/net

/private/var/folders/zz/*
/private/var/vm/*
/private/tmp/*
/cores/*

.Trash
.Trashes

/Backups.backupdb
/.MobileBackups
/.MobileBackups.trash
/.MobileBackups.trash

Library/Mobile Documents.*
.webtmp

/Library/Caches/CrashPlan
/PGPWDE01
/PGPWDE02
/.bzvol
/Library/Application Support/Comodo/AntiVirus/Quarantine
/private/var/spool/qmaster
$Recycle.Bin
Saved Application State
Library/Preferences/ByHost/com.apple.loginwindow*

.AppleDesktop
.com.apple.timemachine.supported
Network Trash Folder
/Library/Caches/*
/private/var/spool/postfix/*
$RECYCLE.BIN
/stuff/*
/afs/*
/private/var/run/*
/Previous Systems.localized
/tmp/*
.dbfseventsd
.DS_Store
.PKInstallSandboxManager
.SymAV*
.symSchedScanLockxz
.TemporaryItems
Desktop DB
Desktop DF
hiberfil.sys
pagefile.sys
Recycled
RECYCLER
System Volume Information
Temporary Items
Thumbs.db
AUTORUN.INF
Autorun.inf
autorun.inf
Manuel
quelle
3

Ich habe rsync für Backups bei mehreren Jobs verwendet und verwende es zu Hause.

Ich kann es nur empfehlen, aber mit einigen Modifikationen. Als Backup-Tool ist es großartig, aber als Archivierungs-Tool fällt es ein wenig flach. Ja, es kopiert alles, aber Sie erhalten nicht von allem Versionen, sondern immer nur die neuesten Versionen.

Ich habe diesen Leitfaden http://www.mikerubel.org/computers/rsync_snapshots/ als Ausgangspunkt verwendet. Lesen Sie die ganze Seite. Es erklärt hervorragend die Optionen und beschreibt, wie Sie inkrementelle Sicherungen implementieren können. Und erstaunlicherweise ist der Artikel über 10 Jahre alt, aber noch heute anwendbar. Muss Unix lieben.

sevis127
quelle
1
Vielen Dank. Auf jeden Fall wollte ich die besonderen Überlegungen behandeln, die man unter Mac OS X treffen möchte. Ich wollte nicht wirklich nur eine Anleitung von rsync. Auf jeden Fall, guter Link, es deckt eine Menge ab, rsyncaber es gibt ab heute ein Tool, um genau das zu tun : rsnapshot.
Manuel