TimeMachine bietet die Möglichkeit bestimmte Ordner und Dateien aus dem Backup auszuschließen. Der Benutzer kann dies selbst über die Systemeinstellungen > TimeMachine > Optionen steuern. Für den programmatischen Zugriff auf TimeMachine liefert Apple das Terminal-Kommando tmutil mit.
Um einen bestimmten Ordner oder Dateien aus dem Backup auszuschließen, gibt es zwei Verfahren: Zum einen wird die Pfad-unabhängige ("Sticky") Methode verwendet, die mit Extended Attributes funktioniert. Oder man benutzt die Pfad-abhängige ("absolute") Methode, die mit Einträgen in der com.apple.TimeMachine.plist arbeitet. Es ist möglich beide Verfahren zu kombinieren bzw. Einträge mehrfach für die selbe Datei/Ordner zu setzen.
Beide Methoden wurden unter Mac OS X Mountain Lion (10.8) und Mac OS X Mavericks (10.9) getestet.
Sticky-Methode
(Diese Methode kann nach meinem bisherigem Kenntnisstand nur programmatisch genutzt werden. Der Benutzer hat keine Möglichkeit dieses Verhalten direkt im GUI zu konfigurieren.) Durch den Aufruf des folgenden Kommandos wird einem Ordner/Datei ein Extended Attribute names "com.apple.metadata:com_apple_backup_excludeItem" angehängt.
Hinzufügen eines Eintrags:
tmutil addexclusion /path/to/file
Dies lässt sich mittels ls -al@
oder xattr -l /path/to/file
überprüfen.
Überprüfen ob eine Datei ausgeschlossen ist:
tmutil isexcluded /path/to/file
Dateien/Ordner die mit der Sticky-Methode ausgeschlossen wurde, lassen sich mit folgendem Kommando im Spotlight-Index auffinden.
Anzeigen aller Einträge:
mdfind "com_apple_backup_excludeItem = com.apple.backupd"
Löschen eines Eintrags:
tmutil removeexclusion /path/to/file
Mit dem Kommando xattr -p com.apple.metadata:com_apple_backup_excludeItem /path/to/file
kann das Extended Attribute entfernt werden.
Hinweis: Extended Attributes sind eine Besonderheit von Mac OS und können beim Kopieren und auf nicht HFS+ kompatiblen Dateisystemen verloren gehen.
Absolute-Methode
Bei der absoluten Methode werden die auszuschließenden Pfade in die /Library/Preferences/com.apple.TimeMachine.plist geschrieben. Sie ist der Sticky-Methode vorzuziehen. Über die GUI vom Benutzer definierte Einträge werden unter dem Key SkipPaths eingetragen, programmatisch definierte in ExcludeByPath. Die Einträge in ExcludeByPath werden dem Benutzer im GUI nicht angezeigt. Mit dem tmutil ist es nicht möglich SkipPaths Einträge zu definieren.
Hinzufügen eines Eintrags:
sudo tmutil addexclusion -p /path/to/file
Überprüfen ob eine Datei ausgeschlossen ist:
tmutil isexcluded /path/to/file
Anzeigen aller Einträge:
# Benutzer-Eintrag
defaults read /Library/Preferences/com.apple.TimeMachine.plist SkipPaths
# Programme-Eintrag
defaults read /Library/Preferences/com.apple.TimeMachine.plist ExcludeByPath
Löschen eines Eintrags:
sudo tmutil removeexclusion -p /path/to/file
Hinweis: Bei der Angabe von Pfaden ist auf die spezielle Formatierung zu achten /Users/username/Downloads ist nicht unbedingt gleichzusetzen mit ~username/Downloads.