73 votes

Comment puis-je supprimer des fichiers Time Machine en utilisant la ligne de commande ?

Je veux supprimer certains fichiers/répertoires de ma partition Time Machine à l'aide de la fonction rm mais je n'y parviens pas. Je suis presque sûr que le problème est lié à une sorte de contrôle d'accès étendu aux attributs des fichiers de la sauvegarde, mais je ne sais pas comment les remplacer/désactiver afin d'obtenir des résultats satisfaisants. rm pour travailler. Voici un exemple de l'erreur que je reçois :

% 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

Il y a un certain nombre de raisons pour lesquelles je ne veux pas utiliser l'interface graphique de Time Machine ou le Finder pour cela. Si possible, j'aimerais pouvoir maintenir la protection étendue pour tous les autres fichiers (j'aimerais ne pas les désactiver globalement, à moins de pouvoir les réactiver une fois mon travail terminé).

1voto

IMHO Points 145

Si vous n'exécutez pas la commande en tant qu'utilisateur "propriétaire" de la sauvegarde, vous allez avoir du mal à supprimer à partir de la ligne de commande. Je viens d'être confronté à ce problème lors d'une migration, et nous avons dû supprimer toute la sauvegarde Time Machine (1 To+) et formater le disque avant de pouvoir y accéder - et croyez-moi, j'ai tout essayé pour passer outre les permissions.

0voto

Nuthatch Points 1553

Si vous souhaitez supprimer tous les fichiers d'un dossier et pas seulement des fichiers spécifiques, vous pouvez le faire en ajoutant le dossier à la liste d'exclusion de Time Machine. (Préférences système -> Time Machine -> Options. Faites glisser le dossier ici).

La prochaine fois que vous effectuerez une sauvegarde, les copies de ce dossier seront supprimées des sauvegardes précédentes.

Maintenant, si vous vraiment voulez faire cela à partir d'une CLI, il y a un moyen, bien qu'un peu lourd.

  1. Faites une sauvegarde de /Library/Preferences/com.apple.TimeMachine.plist
  2. Copiez /Library/Preferences/com.apple.TimeMachine.plist dans un endroit où vous pourrez jouer avec.
  3. Cd dans l'endroit où vous le mettez.
  4. Exécuter
    plutil -convert xml1 com.apple.TimeMachine.plist
    pour le convertir de la forme binaire.
  5. Ouvrez le fichier plist converti dans un éditeur de texte préféré, recherchez "skippaths".
  6. Insérez une nouvelle ligne dans cette section, formatée comme suit <string>/Path/To/Exclude</string>
  7. Sauvegarder et quitter, reconvertir en exécutant
    plutil -convert binary1 com.apple.TimeMachine.plist
  8. Copiez votre plist modifié dans /Library/Preferences/.
  9. Démarrez une sauvegarde en exécutant
    /System/Library/CoreServices/backupd.bundle/Contents/Resources/backupd-helper -auto

Edit : Lorsque vous effectuez l'étape 9, toutes les copies du dossier nouvellement exclu seront effacées des sauvegardes précédentes.

Pour supprimer l'exception, copiez votre sauvegarde dans /Library/Preferences.

0voto

Jeremy W. Sherman Points 606

Vous pouvez faire ls liste des attributs étendus dans une vue longue en utilisant la -@ le drapeau. Il listera les ACLs lorsque vous fournissez l'option -e drapeau. Ainsi, vous pouvez savoir à quoi vous avez affaire en utilisant ls -lea@ DIR .

À en juger par mes sauvegardes Time Machine locales, il semble que Time Machine applique des attributs étendus avec des métadonnées sur les instantanés les plus récents et les plus anciens. Les données stockées par les xattrs semblent être un plist binaire. Ceux-ci semblent inoffensifs.

Time Machine cherche également à appliquer des ACL à certains répertoires qu'il connaît, comme ceux placés dans un répertoire utilisateur standard. Il existe deux types de listes de contrôle d'accès qui peuvent vous gêner : celles appliquées directement au fichier ou au répertoire qui refusent la suppression, et celles appliquées à un parent du fichier qui refusent la suppression de l'enfant.

Malheureusement, Mac OS X ne fournit pas d'utilitaires à l'utilisateur. getfacl y setfacl spécifié par POSIX.2c pour visualiser et manipuler les ACL. Pour manipuler les ACLs, vous devrez faire un peu de programmation ; voir la section acl(3) page de manuel.

0voto

torstenlehmann Points 1

J'avais besoin de cette combinaison et de cet ordre de commandes pour supprimer les fichiers restants lors de la suppression d'un répertoire Time Machine sur un disque externe. N'utilisez ces commandes que si aucune autre option n'a fonctionné pour vous.

  1. Démarrer en mode utilisateur unique (maintenir CMD+S au démarrage)
  2. sudo chflags -R nouchg <path to some.backupdb>
  3. sudo chflags -R noschg <path to some.backupdb>
  4. sudo chmod -R ugo+rw <path to some.backupdb>
  5. sudo chmod -R -N <path to some.backupdb>
  6. sudo rm -rf <path to some.backupdb>

Explications : Pourquoi chown rapporte "Operation not permitted" sous OS X ?

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X