Löschen Sie alle Sicherungen bestimmter Dateien/Ordner mit tmutil

Ich versuche, alle Sicherungen bestimmter Elemente über die Befehlszeile zu löschen. Ich kann dies mit der GUI durch die folgenden Schritte erreichen:

  1. Geben Sie Time Machine ein
  2. Navigieren Sie zu der zu löschenden Datei
  3. Klicken Sie mit der rechten Maustaste (oder klicken Sie auf das Zahnradsymbol im Finder) und wählen Sie „Alle Sicherungen von … löschen“.

Wie kann ich dies in der Befehlszeile mit replizieren tmutil? Besonders wenn Sie Backup Loupe verwenden, um große Dateien zu erkennen, wäre es einfacher, das Terminal zu verwenden (da ich TimeMachine nicht jedes Mal aufrufen muss, wenn ich eine bestimmte Datei löschen möchte, und mit dem Finder zu ihr navigieren kann, und legen Sie es dann auf dem Terminal ab, um einen Befehl zum Löschen zu erhalten).

Ich hatte gehofft, ich könnte so etwas verwenden:

sudo tmutil delete /path/to/file

jedoch gibt es mir den Fehler:

"Ungültiges Löschziel (Fehler 22)"`

Das funktioniert gut:

sudo tmutil delete /Volume/Backups.backupdb/<machinename>

und das auch:

sudo tmutil delete /Volume/Backups.backupdb/<machinename>/<specificbackup>

Entsprechend sollman tmutil der deleteBefehl auch bestimmte Items löschen können. Allerdings hatte ich bisher Pech. Obwohl es auf dieser Website (und anderswo) zahlreiche Antworten zum Löschen bestimmter Backups mit und zum Löschen bestimmter Backup- Elemente über die GUI (mit der oben beschriebenen Methode) gibt, konnte ich keine Möglichkeit finden, bestimmte Backup- Elemente außerhalb der GUI zu löschen .tmutil

@stephenwade Ich sehe, du hast dieser Frage ein Kopfgeld hinzugefügt, danke :) Soll ich jetzt eine Antwort akzeptieren oder sollst du jemandem das Kopfgeld geben? Mir ist unklar, wie Bounties auf die Fragen anderer funktionieren.
Sie können jede beliebige Antwort akzeptieren (oder nicht akzeptieren), ohne dass dies Auswirkungen auf das Kopfgeld hat.

Antworten (2)

Ich habe diese SU-Fragen und Antworten mit dem Titel gefunden: Wie kann ich Time Machine-Dateien mithilfe der Befehlszeile löschen , die eine Methode zum Löschen bestimmter Dateien aus der CLI demonstriert. Diese Antwort hat eine Methode hervorgehoben, die so klingt, wie Sie es wollen:

Meine Sicherungsfestplatte ist voll. Ich habe eine sehr große Datei (viele Gigabyte), die seit Monaten gesichert wird. Es gibt eine physische Kopie davon, aber viele Snapshots mit festen Links zu dieser Kopie. Um diese Datei tatsächlich loszuwerden, muss ich den festen Link aus jedem Backup entfernen.

In dieser Antwort wurde gezeigt, dass man diese Methode verwenden kann, um eine Datei zu löschen:

$ cd /Volumes/WD\ 500G\ USB/Backups.backupdb/csm-laptop
$ ls -li */Macintosh\ HD/Users/csm/vm.img
...
2740350 -rw-r--r--@ 28 csm  staff  42949672960 Feb 17 16:12 2015-05-08-005636/Macintosh HD/Users/csm/vm.img
2740350 -rw-r--r--@ 28 csm  staff  42949672960 Feb 17 16:12 2015-05-08-015812/Macintosh HD/Users/csm/vm.img
2740350 -rw-r--r--@ 28 csm  staff  42949672960 Feb 17 16:12 2015-05-08-030036/Macintosh HD/Users/csm/vm.img
2740350 -rw-r--r--@ 28 csm  staff  42949672960 Feb 17 16:12 2015-05-08-041307/Macintosh HD/Users/csm/vm.img
2740350 -rw-r--r--@ 28 csm  staff  42949672960 Feb 17 16:12 Latest/Macintosh HD/Users/csm/vm.img

Die Methode zum Löschen der Datei verwendet ein in Time Machine enthaltenes Hilfs-CLI-Tool mit dem Namen bypass:

$ sudo bypass rm -f */Macintosh\ HD/Users/csm/vm.img

Ort der Umgehung

Da bypasses als Hilfsskript für Time Machine betrachtet wird, befindet es sich normalerweise nicht auf Ihrer $PATH. Daher müssen Sie den vollständigen Pfad zur ausführbaren Datei angeben. Zusätzlich hat Apple es für verschiedene Versionen von macOS verschoben.

$ sudo /System/Library/Extensions/TMSafetyNet.kext/Contents/MacOS/bypass \
    rm -rfv /Volumes/[disk]/Backups.backupdb/[path]

In 10.8 Mountain Lion wurde die Umgehung in „Helfer“ verschoben:

$ /System/Library/Extensions/TMSafetyNet.kext/Helpers/bypass

In 10.10 Yosemite wurde die Umgehung hierher verschoben:

$ /System/Library/Extensions/TMSafetyNet.kext/Contents/Helpers/bypass

Verweise

Das sieht in der Tat danach aus, wonach ich gesucht habe. Zur Verdeutlichung: Mit "Entfernen des Hardlinks von jedem Backup" meinen Sie "von jedem Snapshot", richtig? Und die Verwendung des Platzhalters im Befehl sudo bypass rm -f */Macintosh\ HD\Users\csm\vm.imgstellt sicher, dass dies alles auf einmal erledigt wird?
@Jan Das rmläuft danach cd /Volumes/DISK/Backups.backupdb/MACHINE, damit der Platzhalter auf alle datierten Ordner erweitert wird, die das Bild enthalten. Ich habe jedoch einen \\ Tippfehler /in der Antwort behoben.
Yaaaaassss! Ich habe jahrelang danach gesucht und werde einige weniger kritische Backups testen, da ich am meisten daran interessiert bin, die Integrität des Backup-Ziels für laufende Backups aufrechtzuerhalten. apple.stackexchange.com/questions/180214/…
@bmike Bitte kommentieren Sie zurück und lassen Sie mich wissen, was Sie finden. Ich habe auch ein paar Macs, auf denen ich das machen muss.
Ich werde @stephenwade - es kann ein oder zwei Wochen dauern, bis ich Zeit habe, dies zu testen. Es scheint bypassgenau das Skalpell zu sein, das ich für mein Werkzeug brauche. Ich würde es gerne in Swift oder Python verpacken, damit es einfacher zu verwenden ist, aber wir werden sehen, ob ich zur Shell zurückkehre
Falls jemand macOS 10.13 High Sierra hat, wollte ich erwähnen, bypassdass es sich an derselben Stelle befindet wie in 10.10. Ich habe es benutzt und es funktionierte genau wie erhofft.
Update: Dies funktioniert nicht mit einem APFS Time Machine-Backup

Entsprechend kann man tmutilder tmutil deleteBefehl verwendet werden, um einen oder mehrere Snapshots , Maschinenverzeichnisse oder Sicherungsspeicher zu löschen . Die Begriffe werden am Anfang derselben Handbuchseite definiert:

  • Snapshot : Ein Verzeichnis innerhalb eines Maschinenverzeichnisses, das eine einzelne anfängliche oder inkrementelle Sicherung eines Computers darstellt (z. B. /Volumes/Chronoton/Backups.backupdb/thermopylae/2011-07-03-123456)
  • Maschinenverzeichnis : Ein Verzeichnis innerhalb eines Sicherungsspeichers, das alle Sicherungen für einen bestimmten Computer enthält (z. B. /Volumes/Chronoton/Backups.backupdb/thermopylae)
  • Sicherungsspeicher : Das Verzeichnis "Backups.backupdb" der obersten Ebene im Stammverzeichnis einer Sicherungsfestplatte (z. B. /Volumes/Chronoton/Backups.backupdb)

Es scheint also leider nicht möglich zu sein, tmutilbestimmte Elemente innerhalb eines Schnappschusses zu löschen.