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 (im Finder) kopiere. Die externe Festplatte enthält nur „Basisdaten“ (Ordner, Bilder, Videos, Dokumente usw.), nichts Ausgefallenes/Seltsames.
Aber mit all den erstaunlichen kostenlosen Tools, die es da draußen gibt, konnte ich kein anständiges Backup finden (Vorschläge akzeptiert).
Ich möchte das automatisieren. Nach ein paar Recherchen scheint es, als könnte ich rsync
. Ich möchte dies dann automatisieren, indem ich das rsync
Kopieren von Dateien vermeide, die sich bereits auf der Zielfestplatte befinden (wenn eine Änderung vorgenommen wurde, möchte ich natürlich die Datei/den Ordner aktualisieren; dasselbe gilt für gelöschte Dateien/Ordner oder neue Dateien /folders; die Idee ist, das nachzuahmen, was ich normalerweise manuell mit dem Finder mache).
Ich bin an diesem Punkt angelangt
rsync -av --progress --delete /Volumes/A/ /Volumes/B
Jetzt ist das Protokoll voller Dateien, deren Name mit .
oder ._
oder sogar beginnt ._.
. Sind sie notwendig?
Wie kann ich nur die wichtigen Dateien kopieren und alle unwichtigen zurücklassen? Wenn ich zum Beispiel hätte, würde ich erwarten, , keine oder viele Dateien photo.png
zu kopieren .photo.png
._photo.png
Was --exclude
oder --exclude-from
kann sicher auf einem Mac verwendet werden? Vielleicht ist eine gute Regel: „Kopiere einfach alles, was der Finder anzeigt“, was ich kopieren würde, wenn ich manuell durch alle Ordner gehen würde.
Ist -av --progress --delete
genug? Begehe ich eine Straftat oder riskiere ich Daten? Welche Optionen würden Sie verwenden.
Bitte untermauern Sie Ihre Antwort mit einigen Argumenten, ich würde mich freuen.
Ich suche nach einer Möglichkeit zur Automatisierung rsync
, die ziemlich leistungsfähig und kostenlos zu verwenden scheint.
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, ändern sich auch die Existenz, der Zweck und der Inhalt dieser Metadatendateien. Das Kopieren von allem reduziert den Wartungsaufwand und bietet die Gewissheit, dass nichts verloren geht.
Die von erstellte Protokolldatei rsync
ist technisch involviert rsync
, da es sich um ein Befehlszeilentool handelt. Erwägen Sie, eine aufgeräumte, nach Metadaten gefilterte und vielleicht sogar farbcodierte Ausgabe zur Überprüfung durch den Benutzer zu präsentieren. Sie können dies mit einer Vielzahl von Skriptwerkzeugen und Sprachen tun. Bitte stellen Sie weitere Fragen hier auf Ask Different und auf StackOverflow , wenn Sie Hilfe bei diesem Ansatz benötigen.
In Bezug auf die rsync
Flags werfen Sie einen Blick auf die Frage Schnellste und sicherste Methode zum Kopieren massiver Daten von einem externen Laufwerk auf ein anderes . In dieser Frage werden einige zusätzliche Flags verwendet und erklärt:
sudo rsync -vaE --progress --delete-after /Volumes/SourceName /Volumes/DestinationName
In dieser Situation stellt der sicher, E
dass Ressourcenzweige und andere Mac-spezifische Eigenschaften kopiert werden.
Möglicherweise möchten Sie --delete-after
das Löschen vermeiden, bis der Kopiervorgang abgeschlossen ist. Bitte beachten Sie, dass dieser Ansatz möglicherweise ein Ziellaufwerk erfordert, das doppelt so groß ist wie das Quelllaufwerk.
Eine Antwort auf eine verwandte Frage: Wie kann ich FCPX-Renderdateien aus einer Time Machine-Sicherung auslassen? , lieferte einen nützlichen Link zu OS X-Dateien und -Ordnern, die von den meisten Backups ausgeschlossen werden können . Dieser Link bietet eine praktische Liste mit Dateimustern, Ordnern und Pfaden, die Sie ausschließen können.
Es gibt gute Gründe, Dateien zu sichern, die mit Punkten beginnen, .*
übereinstimmende Dateien.
Einige Software speichert Präferenzen, Einstellungen und andere Informationen von Wert in Ordnern oben im Ordner des Benutzers in unsichtbaren Ordnern mit vorangestelltem Punkt. Beim Ausführen ls -la ~/
werden diese Ordner und Dateien angezeigt.
Wenn ein Benutzer Software verwendet oder besitzt, die wiederum Versionskontrollsoftware verwendet, stellen Sie sicher, dass Sie dot-Dateien sichern. Software wie Subversion und Git speichern beide wichtige Informationen in ihren Punktordnern. Diese versteckten Ordner können über Ihr Dateisystem verstreut sein, wo immer ein Projekt ausgecheckt ist.
Spotlight ist der Suchdienst von OS X. Spotlight verwendet den mdworker
Prozess, um den Suchkatalog zu indizieren und zu aktualisieren. Wenn Sie sich Sorgen über eine mögliche Beschädigung der Festplatte oder langsame Kopien machen, kann das Deaktivierenmdworker
während der Ausführung rsync
hilfreich sein. Ich persönlich lasse Spotlight laufen, während ich große rsync
Übertragungen durchführe.
rsync
.rsync
werden.E
und --delete-after
sind die Schlüsselpunkte, die diese Antwort zu einer gewinnenden machen.~/
. In meinem Fall denke ich, dass ich ziemlich sicher bin, --ignore ' .*'
da es genau dasselbe wäre, als würde ich ein Foto aus dem Internet herunterladen (ich lade keine Aux-Dateien herunter, diese werden vom Computer generiert ). Jetzt wollte ich Argumente, die sagten: „Ja, Sie können sich vorstellen, dass Sie ein Foto aus dem Internet herunterladen, aber es wäre viel, wenn Sie X machen würden“.-E
, in neueren Versionen gibt es, -X
was ich an einigen Stellen empfohlen sehe, welches ist das richtige? Oder beide? Ich hätte gerne eine aktuelle, pseudo-vollständige Fassung, die die meisten allgemeinen Sorgen abdeckt. Wäre das Kopieren von Spotlight-Dateien einfacher und schneller, als sie generieren zu lassen? Wie kann ich Spotlight stoppen, damit es währenddessen nicht durcheinander kommt? Was ist mit caffeinate
dem Prozess? Oder wenn es sich nur um eine Backup-Liste handelt, kann sie nicht von Spotlight indiziert werden, viel weniger Sorgen usw. Viele dieser Fragen wurden mit Sicherheit beantwortet.rsync
unter Mac OS X zu verwenden", all dies sind nur Ideen, die man beantworten könnte.-E
mit einem Laufwerk auf meinem Raspberry Pi zu synchronisieren, erhalte ich die Fehlermeldung rsync: on remote machine: --extended-attributes: unknown option
. Ich nehme an, das bedeutet, dass ich nur -E
lokal verwenden kann (oder zumindest wenn ich macOS für Quelle und Ziel habe)?Ich bin mit den aktuellen Antworten nicht ganz zufrieden, aber ich werde versuchen, hier ein wenig von den Möglichkeiten abzudecken, die ich im Internet gesehen habe, als ich versucht habe, ein nettes Setup für zu finden rsync
.
Und übrigens, wenn man sich für Time Machine-ähnliche Kopien interessiert, gibt es rsnapshot
. Und es gibt auch Unison für Zwei-Wege-Synchronisationen. Außerdem gibt es tatsächlich ein paar GUIs, wie Backup Utility und arRsync ; nicht genau das, wonach ich gesucht habe, aber sie könnten die Arbeit für jemanden erledigen.
Erstens war meine einzige Absicht, Fotos und Videos zu duplizieren, daher war keine exakte Kopie erforderlich, daher musste ich mich nicht zu sehr darum kümmern . Tatsächlich waren die meisten meiner Zweifel, ob ich alles ausschließen könnte (dasselbe würde passieren, wenn ich beispielsweise ein Foto aus dem Internet heruntergeladen habe, ich lade nur eine .png herunter, alles andere wird nicht heruntergeladen , sondern automatisch generiert ).
Hier ist eine unstrukturierte Liste von Gedanken, die Sie berücksichtigen sollten
Wenn Sie sicherstellen möchten, dass Ihr Laptop nicht in den Ruhezustand wechselt, können Sie caffeinate
den Prozess durchführen caffeinate -s rsync -av ...
. Von hier genommen .
Wenn Sie lokale Kopien erstellen, wie in meinem Fall, oder selbst wenn die Internetverbindung nicht zu langsam ist, sollten Sie die Option (Komprimierung) nicht verwenden und verwenden (Ganze Datei übertragen, anstatt Delta-Übertragungen; dies ist eine Standardeinstellung, wenn lokal) und wahrscheinlich verwenden , um Überweisungen schnell durchzuführen. Von hier genommen .-z
-W
--inplace
Sie können verwenden --delete-after
, damit jede Datei zuerst übertragen und dann an das Ziel verschoben (und die ursprüngliche Datei gelöscht) wird und sicherer ist als das Löschen vor der Übertragung oder während der Übertragung.
Sie können die Übertragung stoppen, indem Sie drücken ctrl + C, und sie wird sauber beendet. Von hier genommen . Das war eine meiner Befürchtungen bei SuperDuper!, wenn Sie eine Übertragung stoppen müssen, erhalten Sie die Meldung „Sie werden die Festplatte in einem unbekannten Zustand belassen…“.
In neueren Versionen gibt es --info=progress2
noch mehr Details zu -v
.
Es gibt -P
(was gleich --partial
und ist --progress
), das mitten übertragene Dateien dort belässt, damit Sie weitermachen können, wenn Sie den Prozess neu starten (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 sogar Spotlight für die externe Festplatte deaktivieren.
Andere Optionen, die in all diesen Referenzen verwendet werden, sind -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 einfacher Befehl so aus (ich könnte mehr Optionen verwenden, aber das reicht als Beispiel):
caffeinate -s rsync -av --delete-after --progress --stats --exclude-from 'excludefile.txt' \
"/Volumes/SrcHDD/" "/Volumes/DstHDD" # note the trailing slash / after the source
Jetzt könnte ich in meinem Fall einfach 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:
https://bombich.com/kb/ccc4/some-files-and-folders-are-automatically-excluded-from-backup-task
http://www.hackurmac.com/2014/08/backing-up-and-restoring-your-hackintosh.html
Und von dort aus könnten Sie wahrscheinlich das erhalten, was sicher oder vernünftig zu ignorieren ist. Hier ist die vollständige Liste (ich habe nur 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
Wenn Sie rsync
Version 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>
--protect-decmpfs
ist ab 3.1.3 nicht mehr verfügbar, siehe github.com/Homebrew/homebrew-core/pull/23415 .Ich würde davon abraten , Metadaten während einer Sicherung zu beschneiden, insbesondere die Punktdateien , zB , aber wenn Sie die Punktdateien wirklich von Ihrem Befehl ._$filename
ausschließen möchten, fügen Sie sie hinzu.rsync
--exclude '.*'
rsync -av --exclude '.*' --progress --delete /Volumes/A/ /Volumes/B
'.*'
und '/.*'
?). Ich glaube nicht, dass der Finder alle kopiert, vielleicht sind nur einige davon verbunden. In diesem Fall würde ich es vorziehen, nur diejenigen auszuschließen, die unnötig sind (z . B. .DS_Store
). Und ja, diejenigen, die wichtig sein könnten, aber die ich nicht in meinem Protokoll haben möchte, kann ich mit regulären Ausdrücken filtern.A
Festplatte verwendet werden kann.Bevor Sie hier auf die Antwort eingehen, müssen Sie wissen, dass, obwohl eine rsync
Binärdatei in macOS enthalten ist, es sich jetzt um ein uraltes, 16 Jahre altes Softwarepaket handelt. Auf meinem Catalina-System /usr/bin/rsync --version
meldet sich selbst als Version 2.6.9; veröffentlicht im November 2006. Die rsync
Veröffentlichungshistorie seit Version 2.6.9 scheint deutlich zu machen, dass die Entscheidung von Apple, Upgrades für rsync
ihr Betriebssystem einzustellen, ausschließlich auf der Entscheidung des Teams beruhte rsync
, zur GPLv3-Lizenz zu wechseln. Dies ist bedauerlich, da rsync
Version 3.0 (die Veröffentlichung nach 2.6.9) bedeutende Upgrades enthielt, die speziell macOS-Benutzer unterstützen:
--xattrs
: Behält die erweiterten Attribute von OS X bei--acls
: Behält OS X-Zugriffskontrolllisten bei--fake-super
: Ermöglicht Benutzern ohne Administratorrechte, alle Attribute beizubehaltenDer Punkt des obigen Absatzes ist einfach folgender: Wenn Sie Dateien auf Ihrem macOS sichern möchten rsync
, müssen Sie eine neuere Version als die von Apple bereitgestellte haben. Andernfalls verlieren Sie alle xattrs
und ACLs
- Metadaten, die in mehreren Funktionen von macOS eine wichtige Rolle spielen. Dies lässt sich leicht mit einem einfachen Experiment überprüfen.
Glücklicherweise sind aktuelle Versionen von rsync
macOS-Paketmanagern von Drittanbietern ( z. B. MacPorts ) verfügbar, oder für Heimwerker können Sie das rsync
GitHub-Repo klonen und aus dem Quellcode erstellen.
Es ist auch erwähnenswert, dass eine aktuelle Version von rsync
ein Backup reparieren/wiederherstellen kann, das zuvor mit Apples nativer rsync
Version 2.6.9 erstellt wurde. Es kann auch , s und Datums-Zeitstempel reparieren/wiederherstellen xattrs
, ACL
die von Apples „Migrationsassistent“ verstümmelt oder verloren gegangen sind.
rsync
ist ein ausgereiftes & umfassendes Paket mit zahlreichen Optionen. Viele dieser Optionen sind keine offensichtlichen Optionen, und man kann ziemlich viel Zeit damit verbringen, einen Optionssatz zu entwickeln, um bestimmte Ziele zu erreichen. Obwohl es keine wirklichen Abkürzungen für eine sorgfältige Betrachtung Ihres eigenen Anwendungsfalls gibt, schlage ich die folgenden Optionssätze als vernünftigen allgemeinen rsync
Befehl für die allgemeine Verwendung unter macOS vor - mit anderen Worten ein "Ausgangspunkt" . Sie können diese weiter an Ihre eigenen Bedürfnisse anpassen.
Ich werde zwei Fälle für die Verwendung rsync
zum Sichern und Wiederherstellen vorstellen; eine mit der --delete
Option und eine ohne. In beiden Fällen wird davon ausgegangen, dass das Lokal Macintosh HD
die Quelle für den Sicherungsvorgang und das Ziel für den Wiederherstellungsvorgang ist. In meinem eigenen Fall gibt es einige Ordner (z. B. Documents
), für die ich die Option lieber verwende --delete
, und andere Ordner (z Music
. B. Pictures
& Movies
), in denen ich nicht verwende --delete
. Dies ist eine persönliche Entscheidung, die widerspiegelt, wie ich meine Daten verwalte/organisiere.
Im Kontext von bedeutet rsync
die --delete
Option einfach, dass Löschungen, die Sie in Ihren Quellordnern vornehmen, an Ihre Zielordner weitergegeben werden .
--delete
Option:1. Bei einem BACKUP- Vorgang:
/MacHD_Folder/
/mountpoint/for/remote/storage
rsync -rlAXtgoDiv --fake-super /MacHD_Folder/ /mountpoint/for/remote/storage
2. Bei einem RESTORE- Vorgang:
/mountpoint/for/remote/storage
/MacHD_Folder/
rsync -rlAXtgoDiv --fake-super /mountpoint/for/remote/storage/ /MacHD_Folder
--delete
Option:1. Bei einem BACKUP- Vorgang:
/MacHD_Folder/
/mountpoint/for/remote/storage
rsync -rlAXtgoDiv --fake-super --delete --backup-dir=/mountpoint/for/remote/storage/deletes /MacHD_Folder/ /mountpoint/for/remote/storage
2. Bei einem RESTORE- Vorgang :
/mountpoint/for/remote/storage
/MacHD_Folder/
rsync -rlAXtgoDiv --fake-super /mountpoint/for/remote/storage/ /MacHD_Folder
Beachten Sie die Asymmetrie zwischen Sicherungs- und Wiederherstellungsvorgängen bei Verwendung der --delete
Option. Dies liegt daran, dass für den Wiederherstellungsvorgang nichts gelöscht werden muss . Beachten Sie auch die Verwendung der --backup-dir
Option, wenn Sie die Option verwenden --delete
: Dadurch rsync
werden alle gelöschten Dateien und Ordner in den angegebenen Ordner auf dem Ziellaufwerk verschoben . Sie können sich das als eine Art "Versicherung" für gelöschte Dateien vorstellen - es funktioniert wie der Trash
Ordner auf Ihrer lokalen MacHD.
Dieses GitHub- Rezept bietet weitere Erklärungen und nützliche Optionen.
Ich habe rsync für Backups bei mehreren Jobs verwendet und verwende es zu Hause.
Ich kann es sehr empfehlen, aber mit einigen Änderungen. Als Backup-Tool ist es großartig, aber als Archivierungstool fällt es etwas flach. Ja, es kopiert alles, aber Sie erhalten nicht von allem Versionen, sondern immer nur die neuesten Versionen.
Ich habe diese Anleitung http://www.mikerubel.org/computers/rsync_snapshots/ als Ausgangspunkt verwendet. Lesen Sie die ganze Seite. Es erklärt die Optionen hervorragend und beschreibt, wie Sie inkrementelle Sicherungen implementieren können. Und erstaunlicherweise ist der Artikel über 10 Jahre alt, aber noch heute gültig. Ich muss Unix lieben.
rsync
. Auf jeden Fall guter Link, deckt vieles ab, rsync
aber es gibt ab heute ein Tool, um genau das zu tun: rsnapshot
.
Fahrrad
Ricardo
Merkako