it-swarm.com.de

Wie kann ich Time Machine-Dateien über die Befehlszeile löschen?

Ich möchte einige Dateien/Verzeichnisse mit rm von meiner Time Machine Partition löschen, kann dies jedoch nicht. Ich bin mir ziemlich sicher, dass das Problem mit einer Art von erweiterten Zugriffssteuerungsattributen für Dateien in der Sicherung zusammenhängt, aber ich weiß nicht, wie ich sie überschreiben/deaktivieren soll, um rm zu arbeiten. Ein Beispiel für den Fehler, den ich erhalte, ist:

% Sudo rm -rf Backups.backupdb/MacBook/Latest/MacBook/somedir
rm: Backups.backupdb/MacBook/Latest/MacBook/somedir: Directory not empty
rm: Backups.backupdb/MacBook/Latest/MacBook/somedir/somefile: Operation not permitted

Es gibt eine Reihe von Gründen, aus denen ich weder die Time Machine-GUI noch den Finder verwenden möchte. Wenn möglich, möchte ich den erweiterten Schutz für alle anderen Dateien beibehalten (ich möchte sie nicht global deaktivieren, es sei denn, ich kann sie nach Abschluss meiner Arbeit wieder aktivieren).

65
Tim

Verwenden Sie das Time Machine Safety Net "Bypass" Programm, um "Operation nicht zulässig" Fehler umzugehen:

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

In 10.8 Mountain Lion wurde die Umgehungsstraße in "Helpers" verschoben:

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

In 10.10 Yosemite wurde die Umgehungsstraße hierher verschoben:

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

Beachten Sie , wenn Sie diese Option zum Löschen bestimmter Snapshots verwenden: Da Time Machine feste Links verwendet, kann die Verwendung von rm -r für Ordner auch ältere und neuere Snapshots der betreffen gleiche Maschine . (Weitere Antworten finden Sie unter tmutil delete, um einen bestimmten Snapshot sicher zu löschen.) Die Verwendung von rm zum Löschen aller Snapshots für einen einzelnen Computer ist jedoch in Ordnung. Verwenden Sie rm, um eine bestimmte Datei zu löschen. Dabei wird nur die fest verknüpfte Datei aus den von Ihnen angegebenen Snapshots entfernt, vorausgesetzt, die Datei befindet sich nicht in einem fest verknüpften Verzeichnis, da Sie die Datei dann tatsächlich entfernen würden alle diese fest verbundenen Verzeichnisse.

110
Eric W

BLUF (unterste Zeile oben):

Sudo tmutil delete snapshot-dir


Die Verwendung von Sudo chmod -R -N folder zum Entfernen aller ACLs aus einer Ordnerhierarchie funktioniert nicht für die Dateien und Ordner in Time Machines Backups.backupdb , da die TM Safety Net Mechanismus und die in diesem 318 Tech Journal post (aber möglicherweise) beschriebenen Kriterien nicht genau wie beschrieben).
(Bevor ich dies durch Nachschlagen des in Eric Ws Antwort erwähnten Sicherheitsnetzes erfuhr (was funktioniert), hatte ich nur einen Ordner getestet, der aus einem Unterordner eines TM-Backups geklont wurde, und dortchmodhat funktioniert. Wenn Sie jedochchmodin einem Ordner in einer tatsächlichen TM-Sicherung versuchen, wird der Fehler "Vorgang nicht zulässig" angezeigt.)

Von möglichem Nutzen:
Unter Mac OS 10.7+ gibt es den Befehltmutil(den ich habe ' Ich habe es nicht versucht, da ich immer noch auf Snow Leopard bin. Es hat ein Verb delete , das gemäß der Beschreibung"Snapshots von Backups löschen kann, die nicht von erstellt wurden oder von nicht beansprucht werden, Der aktuelle Computer "(wobei" Snapshot "ein datierter Ordner ist, der eine einzelne Teilsicherung darstellt). Es ist mir nicht klar, ob dies bedeutet, dass eskeineSchnappschüsse löschen kann, dievon oder erstellt wurden von der aktuellen Maschine beansprucht. (?)

26
Arne Stenström

Eine Warnung zur Verwendung des Befehls bypass zum Entfernen einer alten Sicherung: Wenn die gelöschte Sicherung Ordner enthält, die in früheren oder späteren Sicherungen genau gleich sind, werden Dateien möglicherweise auch aus früheren oder späteren Sicherungen gelöscht !

Time Machine verwendet nicht nur Hardlinks für unveränderte Dateien, sondern auch Hardlinks für Ordner, in denen überhaupt keine Dateien hinzugefügt, geändert oder gelöscht wurden. Dies führt zu etwas wie:

/2014-11-06/folder/file1
                  /file2
                  /file3
/2014-11-13/folder/file1 = hard link to file /2014-11-06/folder/file1
                  /file2 (changed; new inode)
                  /file3 = hard link to file /2014-11-06/folder/file3
/2014-11-20/folder/ = hard link to folder /2014-11-13/folder/
/2014-11-27/folder/ = hard link to folder /2014-11-20/folder/

Das Löschen einer Datei aus /2014-11-06/folder/ ist daher in Ordnung und wirkt sich nur auf die Sicherung für dieses Datum aus. Die Anzahl der Verweise auf harte Verknüpfungen wird verringert, sodass " inode " für file2 entfernt wird. Inodes für file1 und file3 haben jedoch weiterhin eine Verweisanzahl von 1 aufgrund von spätere Backups. Daher ist rm -R /2014-11-06 auch in Ordnung.

Wenn Sie jedoch eine Datei aus /2014-11-13/folder/, /2014-11-20/folder/ oder /2014-11-27/folder/ entfernen, wird sie effektiv aus allen drei Ordnern entfernt.

Das Problem ist, dass rm -R sich nicht um fest verbundene Ordner kümmert. Es kehrt nur in einen fest verknüpften Ordner zurück, löscht kühn alle seine Dateien und entfernt dann den leeren Ordner.

Also: Wenn man ein altes Backup entfernt, sollte man nicht in einen fest verlinkten Ordner zurückkehren und dessen Inhalt löschen. Stattdessen sollte man nur den Hardlink für den Ordner selbst entfernen . Verwenden Sie also anstelle von rm -R den tmutil delete wie beschrieben in Arnes Antwort .

Abgesehen davon scheint es, dass der OS X-Befehl unlinknicht für Ordner : "verwendet werden kann, bei denen es sich nicht um ein Verzeichnis handeln darf geliefert werden ". Die OS X-API kann fest verknüpfte Ordner entfernen, ebenso wie GNU Coreutils , wie mit Homebrew installiert.

Um all das zu beweisen, ein Testfall (OSX 10.6.8):

sh-3.2# ls -lFa 2014-11*/Users/USERNAME/Library/Safari/TopSites.plist 
[email protected] 2 USERNAME  staff  1551 10 30  2014 2014-11-06-012454/Users/USERNAME/Library/Safari/TopSites.plist
[email protected] 2 USERNAME  staff  1551 10 30  2014 2014-11-13-024438/Users/USERNAME/Library/Safari/TopSites.plist
[email protected] 2 USERNAME  staff  1551 10 30  2014 2014-11-20-014044/Users/USERNAME/Library/Safari/TopSites.plist
[email protected] 2 USERNAME  staff  1551 10 30  2014 2014-11-27-025033/Users/USERNAME/Library/Safari/TopSites.plist

Beachten Sie, dass die Anzahl der Links für jedes Vorkommen 2 beträgt (zweite Spalte). Entfernen wir das erste Vorkommen:

sh-3.2# /System/Library/Extensions/TMSafetyNet.kext/Contents/MacOS/bypass unlink 2014-11-06-012454/Users/USERNAME/Library/Safari/TopSites.plist 
sh-3.2# ls -lFa 2014-11*/Users/USERNAME/Library/Safari/TopSites.plist 
[email protected] 1 USERNAME  staff  1551 10 30  2014 2014-11-13-024438/Users/USERNAME/Library/Safari/TopSites.plist
[email protected] 1 USERNAME  staff  1551 10 30  2014 2014-11-20-014044/Users/USERNAME/Library/Safari/TopSites.plist
[email protected] 1 USERNAME  staff  1551 10 30  2014 2014-11-27-025033/Users/USERNAME/Library/Safari/TopSites.plist

Nach dem Aufheben der Verknüpfung einer der Dateien ist die Anzahl der Verknüpfungen bei jedem Auftreten auf 1 gesunken, obwohl die Datei immer noch dreimal angezeigt wird. Noch keine Probleme. Entfernen Sie das erste Vorkommen erneut:

sh-3.2# /System/Library/Extensions/TMSafetyNet.kext/Contents/MacOS/bypass unlink 2014-11-13-024438/Users/USERNAME/Library/Safari/TopSites.plist 
sh-3.2# ls -lFa 2014-11*/Users/USERNAME/Library/Safari/TopSites.plist 
ls: 2014-11*/Users/USERNAME/Library/Safari/TopSites.plist: No such file or directory

Jetzt sind alle weg. Anscheinend wurde die Datei TopSites.plist zuletzt am 06.11.2014 geändert und am 13.11.2014 fest verlinkt, da dann einige andere Dateien im Ordner Safari hinzugefügt, geändert oder entfernt wurden. Als Nächstes wurde der Inhalt des Ordners Safari in den folgenden beiden Sicherungen nicht geändert, sodass der Ordner Safari am 20.11.2014 und am 27.11.2014 fest mit der vorherigen Sicherung verknüpft war.

In der Tat verwenden die 4 Ordner nur 2 Inodes (erste Spalte):

sh-3.2# ls -lFaid 2014-11*/Users/USERNAME/Library/Safari/
648651968 [email protected] 86 USERNAME  staff  2924  9 10 16:06 2014-11-06-012454/Users/USERNAME/Library/Safari//
650804457 [email protected] 86 USERNAME  staff  2924  9 10 16:07 2014-11-13-024438/Users/USERNAME/Library/Safari//
650804457 [email protected] 86 USERNAME  staff  2924  9 10 16:07 2014-11-20-014044/Users/USERNAME/Library/Safari//
650804457 [email protected] 86 USERNAME  staff  2924  9 10 16:07 2014-11-27-025033/Users/USERNAME/Library/Safari//
12
Kent

Hinweis: Aufgrund des von Eric W erwähnten "TM-Sicherheitsnetzes" funktioniert diese Antwort nicht für den Fall einer Time Machine-Sicherung, auf die sich die Frage speziell bezieht. In den meisten anderen Fällen sind jedoch die Informationen zum Entfernen von ACLs relevant.


Es ist nicht erforderlich, ACL-Tools zu verwenden, die von einem älteren Betriebssystem kopiert wurden.

Verwenden Sie ls -le, um ACLs anzuzeigen, und chmod, um sie zu ändern.

Weitere Informationen erhalten Sie, indem Sie man chmod eingeben und unter "ACL-Manipulationsoptionen" nachsehen.

Der Befehl zum Entfernen aller ACLs aus einer Ordnerhierarchie lautet:

chmod -R -N foldername
3
Ram

Zeitmaschine funktioniert wie Rshapshot. Für jedes neue Backup wird ein Baum fester Links erstellt. Feste Links zu Dateien, die bereits in einer früheren Sicherung vorhanden waren, belegen nur sehr wenig zusätzlichen Speicherplatz. Erst wenn der letzte feste Link zu einer Datei entfernt wird, wird die Datei tatsächlich aus dem Dateisystem gelöscht.

Das Entfernen eines gesamten einzelnen Backups schadet nicht. Sie entfernen nur harte Links. Keine andere Sicherung ist betroffen. Dies kann aber über tmutil erreicht werden.

Ein Szenario, in dem der Schutz möglicherweise umgangen werden muss, ist das Entfernen einer bestimmten Datei aus allen Sicherungen (und der Grund, warum ich in diesem Beitrag gelandet bin).

Meine Sicherungsdiskette ist voll. Ich habe eine sehr große Datei (viele Gigabyte), die seit Monaten gesichert wurde. Es gibt eine physische Kopie davon, aber viele Schnappschüsse mit festen Links zu dieser Kopie. Um diese Datei tatsächlich loszuwerden, muss ich den festen Link aus jeder Sicherung entfernen.

Beachten Sie, dass die Inode-Nummer für alle festen Links zu derselben Datei gleich ist.

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

(Neueste ist nur ein Symlink zum zuletzt datierten Verzeichnis)

% Sudo bypass rm -f */Macintosh\ HD\Users\csm\vm.img

Die Datei wird aus allen Sicherungen entfernt und Speicherplatz wird zurückgegeben. Wenn sich die Datei im Laufe der Zeit geändert hat, verfügt jede Sicherung über eine vollständige Kopie, und der zurückgegebene Speicherplatz ist enorm.

2
Curt

Wenn Sie den Befehl nicht als Benutzer ausführen, der "Eigentümer" der Sicherung ist, fällt es Ihnen schwer, ihn über die Befehlszeile zu löschen. Ich hatte gerade dieses Problem mit einer Migration, und wir mussten das gesamte Time Machine-Backup (1 TB +) löschen und das Laufwerk formatieren, bevor wir darauf zugreifen konnten - und vertrauen Sie mir, ich habe alles versucht, um die Berechtigungen zu überschreiben.

0
Nic

Sie können festlegen, dass ls erweiterte Attribute in einer langen Ansicht auflistet, indem Sie das Flag [email protected] verwenden. Es werden ACLs aufgelistet, wenn Sie das Flag -e angeben. Sie können also herausfinden, womit Sie es zu tun haben, indem Sie ls [email protected] DIR verwenden.

Nach meinen lokalen Time Machine-Backups sieht es so aus, als würde Time Machine erweiterte Attribute mit Metadaten zu den neuesten und ältesten Snapshots anwenden. Die von den xattrs gespeicherten Daten scheinen eine binäre Liste zu sein. Diese scheinen harmlos.

Time Machine versucht außerdem, Zugriffssteuerungslisten auf bestimmte ihm bekannte Verzeichnisse anzuwenden, z. B. auf Verzeichnisse, die sich in einem Standardbenutzerverzeichnis befinden. Möglicherweise stehen Ihnen zwei Arten von Zugriffssteuerungslisten im Weg: die direkt auf die Datei oder das Verzeichnis angewendeten, die das Löschen verweigern, und die übergeordneten Zugriffssteuerungslisten, die das Löschen von Kindern verweigern.

Leider bietet Mac OS X die in POSIX.2c angegebenen Benutzer-Dienstprogramme getfacl und setfacl zum Anzeigen und Bearbeiten von ACLs nicht an. Um mit ACLs herumzuspielen, müssen Sie etwas programmieren. siehe die acl(3) manpage.

0

Wenn Sie alle Dateien in einem Ordner und nicht nur bestimmte Dateien löschen möchten, können Sie dies erreichen, indem Sie den Ordner zur Ausschlussliste von Time Machine hinzufügen. (Systemeinstellungen -> Time Machine -> Optionen. Ziehen Sie den Ordner hierher.)

Wenn Sie das nächste Mal eine Sicherung durchführen, werden Kopien dieses Ordners aus früheren Sicherungen entfernt.

Wenn Sie dies wirklich von einer CLI aus tun möchten, gibt es einen Weg, wenn auch etwas umständlich.

  1. Erstellen Sie eine Sicherungskopie von /Library/Preferences/com.Apple.TimeMachine.plist
  2. Kopieren Sie /Library/Preferences/com.Apple.TimeMachine.plist an eine Stelle, an der Sie damit spielen können.
  3. CD in, wohin Sie es legen.
  4. Execute
    plutil -convert xml1 com.Apple.TimeMachine.plist
    , um es von der binären Form zu konvertieren.
  5. Öffnen Sie die konvertierte Liste im bevorzugten Texteditor und suchen Sie nach "Skippaths".
  6. Fügen Sie in diesen Abschnitt eine neue Zeile ein, die als <string>/Path/To/Exclude</string> formatiert ist.
  7. Speichern und beenden, durch Ausführen zurückkonvertieren
    plutil -convert binary1 com.Apple.TimeMachine.plist
  8. Kopieren Sie Ihre bearbeitete Liste zurück in/Library/Preferences /
  9. Starten Sie eine Sicherung, indem Sie ausführen
    /System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper -auto

Bearbeiten: Wenn Sie Schritt 9 ausführen, werden alle Kopien des neu ausgeschlossenen Ordners aus früheren Sicherungen gelöscht.

Um die Ausnahme zu entfernen, kopieren Sie Ihr Backup zurück in/Library/Preferences.

0
Frost