10.12 Sierra Problème pour vider la corbeille

shopgame

Membre confirmé
10 Décembre 2016
21
1
Bonjour,

1) Je ne peux pas vider la corbeille à cause d’un dossier récalcitrant, et en plus qui est vide (dossier que j’avais supprimé depuis un disque dur externe). Si je tente de vider la corbeille, j’ai ce message : « Impossible d’effectuer l’opération car l’élement « … » est utilisé », alors qu’il n’est pas utilisé, à aucun moment, et j’ai 3 choix : ignorer, arrêter ou continuer. Si je clique sur arrêter ou continuer, seul le dossier corrompu reste.
2) Si je déplace un fichier vidéo avec une taille X à l’intérieur du dossier, le dossier affichera toujours 0 octet. Si je supprime le dossier (avec vidéo à l’intérieur), même problème que dans 1) : « dossier utilisé » en gros, seul la vidéo est supprimée et le dossier reste dans la corbeille.

J’ai déjà vérifié ces paramètres ou essayé ces choses :
le dossier n’est pas verrouillé.
j’ai les permissions de lecture et d’écriture du dossier.
j’ai tenté sans succès d’appuyer sur option+vider la corbeille en même temps.
j’ai tenté sans succès de supprimer ce dossier avec la commande “sudo rm –R” depuis le Terminal, message d’erreur : unlink file
j’ai tenté sans succès de forcer le vidage de la corbeille avec l’application BatChmod.

J’ai pas mal de dossiers et fichiers sur mon disque dur externe, et la suppression de fichiers et le vidage de corbeille fonctionnaient très bien il y a quelques jours avant ce problème.
Sinon, dans la corbeille je peux supprimer manuellement d’autres fichiers/dossiers créés depuis l’OS ou le DD, mais pas ce dossier corrompu.
Je peux déplacer ce dossier problématique de la corbeille vers le DD. Si je le déplace du DD vers le bureau (l’ordinateur en gros), j’ai un message qui me dit que le fichier a été copié mais que l’original n’a pas pu être supprimé. Et je peux également copier ce dossier sans problème (corbeille vers DD, ou DD vers bureau).

Sinon juste pour préciser : j’ai renommé ce dossier corrompu plusieurs fois, je ne sais pas si ça peut avoir une incidence.

Bonjour audemartinoli

Ta clé attachée au Mac > après avoir sauvegardé les fichiers de son volume (s'il y a lieu) > re-démarre en tenant pressées les touches ⌘R de l'écran noir jusqu'à la  --> c'est le démarrage sur le Recovery OS (OS de secours de la partition Recovery HD).

Lance l'«Utilitaire de Disque» > sélectionne le disque de la clé > menu "Effacer" > nom = quodlibétique (= ce que tu préfères) > schéma de partition = GUID > format de volume = Apple_étendu (journalisé).

=> cette ré-initialisation dans l'environnement d'un système indépendant devrait régler ton problème de "processus" utilisant le volume de la clé dans l'environnement de l'OS et de ta session.
J'ai bien trouvé cette proposition de solution ci-dessus, mais je ne peux pas sauvegarder mes données du DD autre part sachant qu'il y a près de 2 To occupés dessus, et que je n'ai pas de place sur mon Mac ou sur d'autres DD.

J’aimerais régler ce problème et éviter l’impossibilité de supprimer des gros fichiers qui occuperaient de la place inutilement sur mon DD à l’avenir.

Ma config :
macOS Sierra 10.12.6, MBP 13" de 2016.
Disque dur Western Digital de 2 To, formaté en exFat.

Pouvez-vous m’aider ? Merci.
 
Salut shopgame


Le volume de ton DDE recèle un dossier invisible graphiquement (car commençant par un .) : le dossier .Trashes, qui est la corbeille de ce volume.

Comme ce volume d'un périphérique est susceptible d'être utilisé par plusieurs utilisateurs (et pas qu'un seul) > lorsqu'un utilisateur que je vais supposer être toi = shopgame déplace un élément du volume à la corbeille > il se trouve déplacé dans un sous-dossier du dossier .Trashes du volume intitulé de son UID = User_ID (identité d'utilisateur) qui est un . Si tu es l'utilisateur admin aborigène de ton OS > ton UID est par défaut 501. Donc l'élément que tu déplaces à la corbeille du volume du DDE se trouve localisé at : /Volumes/nomduvolumeDDE/.Trashes/501.

Si un autre utilisateur du volume du périphérique, supposons un autre admin nommé brol dont l'UID est 503, déplace un élément du volume à la corbeille, l'élément déplacé se trouve localisé at : /Volumes/nomduvolumeDDE/.Trashes/503.

Quand tu ouvres ta session d'utilisateur dans l'OS > le Finder affiche dans le Dock la corbeille de ta session (un dossier invisible encore localisé dans l'espace-racine de ton dossier home et intitulé .Trash) avec ses éléments non supprimés éventuels. Si tu attaches en plus ton DDE au Mac et que son volume soit remonté > alors le Finder va afficher dans la corbeille du Dock non seulement les contenus de la corbeille de ton home (.Trash) > mais aussi les contenus de ta corbeille personnelle du volume (/Volumes/nomduvolumeDDE/.Trashes/501).

L'élément récalcitrant que tu n'arrives pas à supprimer et qui se trouve affiché par le Finder dans la corbeille du Dock > est donc un élément situé at : /Volumes/nomduDDE/.Trashes/501/élément_récalcitrant). C'est le Finder de ta session qui gère sa suppression ou bloque à sa suppression et qui a l'air de considérer que cet élément ne peut pas faire l'objet d'une suppression parce qu'un processus serait en train de l'utiliser.

----------

Un moyen de forcer la suppression d'un élément bloqué dans la corbeille d'utilisateur d'un volume parce que le Finder de sa session refuse la suppression > est de passer dans le «Terminal» une commande ciblée de suppression des éléments de cette corbeille d'utilisateur du volume > à condition d'avoir pour l'occasion une autre identité que celle de l'utilisateur et des droits de System Administrator pour opérer > càd. d'exécuter la commande en tant qu'utilisateur root.

Exécuter cette commande ciblée en tant qu'utilisateur root > dans le cadre d'un session qui n'est pas celle de l'utilisateur = toi > ajoute à la puissance exécutive d'une commande root le fait qu'aucun processus ne peut, dans ces conditions d'une session étrangère, être en train d'utiliser l'élément récalcitrant.

C'est ainsi que démarrer (par exemple) en mode Recovery > pour exécuter une commande ciblée visant le contenu de la corbeille 501 du volume > dans le «Terminal» de la session Recovery où l'utilisateur par défaut est root => réunit toutes les conditions pour le succès de l'opération : une session étrangère > dans laquelle l'opérateur a les droits de System Administrator.

----------

Si mon petit exercice matinal d'interprétation t'a convaincu > je te suggère le procédé suivant : ta session habituelle ouverte > attache ton DDE à ton Mac > va alors à : Applications > Utilitaires > lance le «Terminal». Dans la fenêtre qui s'est ouverte > saisis la commande (purement informative = ne produisant que des effets de lecture seule) :
Bloc de code:
diskutil list
et ↩︎ (presse la touche "Entrée" du clavier pour activer la commande)

  • tu vas voir s'afficher en retour le tableau des disques attachés à ton Mac (en interne / externe) > avec leurs paramètres logiques de tables de partitions et de partitions - dont ceux du disque de ton DDE et de la partition sur laquelle monte son volume

Tu n'as qu'à poster ce tableau ici en copier-coller > mais attention ! avant de faire ton coller ici > presse le bouton (4è avant la fin à droite) dans la barre de menus au-dessus du champ de saisie d'un message > menu : </> Code > par ⌘V colle dans la fenêtre Code > presse le bouton Insérer (ce procédé permet un affichage fenêtré qui économise l'espace de page en respectant la mise en forme des tableaux du «Terminal» --> d'où une plus grande lisibilité)

=> grâce à ces informations > il sera possible de te passer une autre commande de lecture du contenu de la corbeille générale .Trashes du volume de ton DDE > ce qui fera connaître l'UID de ta corbeille personnelle (501 ou un autre).

Nanti de ces informations > si une commande de suppression de ses contenus en sudo (empruntant l'identité de root) ne suffisait pas > une commande analogue à exécuter dans le «Terminal» de la Recovery passerait nécessairement en l'absence de tout processus susceptible d'utiliser actuellement un élément de cette corbeille.
 
Dernière édition par un modérateur:
Merci pour les réponses, et pour la dernière très détaillée.
Voici :

Bloc de code:
Last login: Fri Sep 15 11:31:35 on console
MBPdeAlexandre:~ alexandre$ diskutil list
/dev/disk0 (internal):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                         251.0 GB   disk0
   1:                        EFI EFI                     314.6 MB   disk0s1
   2:          Apple_CoreStorage Macintosh HD            250.0 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3

/dev/disk1 (internal, virtual):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Macintosh HD           +249.7 GB   disk1
                                 Logical Volume on disk0s2
                                 57CD3B25-CC8E-46F0-838A-F3BDBF62EC62
                                 Unlocked Encrypted

/dev/disk2 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *2.0 TB     disk2
   1:                        EFI EFI                     209.7 MB   disk2s1
   2:       Microsoft Basic Data WD 2 To                 2.0 TB     disk2s2

MBPdeAlexandre:~ alexandre$
 
Je suppose donc que le volume concerné est intitulé WD 2 To (celui qui monte sur la partition disk2s2).

Tu n'as qu'à saisir la commande toujours informative (en copier-coller direct) :
Bloc de code:
sudo ls -R /Volumes/"WD 2 To"/.Trashes
et ↩︎ --> une demande de password s'affiche (commande sudo) --> tape ton mot-de-passe de session admin à l'aveugle - aucun caractère ne s'affichant à la frappe - et ↩︎ de nouveau.

  • sudo (substitute_user_do : opérer sous une identité d'utilisateur substitué, root par défaut) est requis pour accéder en lecture au contenu du dossier .Trashes

  • la commande retourne (récursivement : de haut en bas) le contenu - dossier et fichiers - du dossier-corbeille .Trashes du volume WD 2 To

=> tu n'as qu'à poster l'affichage retourné comme tu l'as bien fait précédemment. On en saura davantage.
 
Je suppose donc que le volume concerné est intitulé WD 2 To
Exact.
Voici :
Bloc de code:
Last login: Fri Sep 15 15:39:25 on ttys000
MBPdeAlexandre:~ alexandre$ sudo ls -R /Volumes/"WD 2 To"/.Trashes
Password:
._501    501

/Volumes/WD 2 To/.Trashes/501:
._TRIER    TRIER

/Volumes/WD 2 To/.Trashes/501/TRIER:
MBPdeAlexandre:~ alexandre$
 
Tiens ! cette bonne ville de «Trêves» sur la Moselle : c'est elle que tu veux supprimer ?
 
Première tentative --> passe la commande (copier-coller et authentification à l'aveugle) :
Bloc de code:
sudo rm -rf /Volumes/"WD 2 To"/.Trashes/501/*

=> tu n'as qu'à dire si elle a été ou non validée (par exemple, si une commande :
Bloc de code:
 sudo ls /Volumes/"WD 2 To"/.Trashes/501
derrière la première - pas besoin de ré-authentification dans les 5' qui suivent un premier sudo - ré-affiche toujours Trier ou rien).
 
et voici

Bloc de code:
Last login: Fri Sep 15 17:46:45 on ttys000
MBPdeAlexandre:~ alexandre$ sudo rm -rf /Volumes/"WD 2 To"/.Trashes/501/*
Password:
rm: /Volumes/WD 2 To/.Trashes/501/TRIER: Directory not empty
MBPdeAlexandre:~ alexandre$  sudo ls /Volumes/"WD 2 To"/.Trashes/501
._TRIER    TRIER
MBPdeAlexandre:~ alexandre$
 
La commande n'a donc pas été validée (je m'en doutais un peu).

2è tentative --> passe la commande :
Bloc de code:
sudo rm -rf /Volumes/"WD 2 To"/.Trashes/501

  • cette commande diffère de la 1ère en ce qu'elle ne supprime pas les éléments enfants contenus dans le sous-dossier 501 > mais carrément le sous-dossier parent 501

  • si la commande passe > la suppression de 501 ne pose pas de problème > car ce sous-dossier serait recréé automatiquement à ta prochaine mise à la corbeille d'un élément du volume WD 2 To

=> tu n'as qu'à dire ce qui en est résulté.
 
Toujours pas ?
Bloc de code:
Last login: Fri Sep 15 17:47:03 on ttys000
MBPdeAlexandre:~ alexandre$ sudo rm -rf /Volumes/"WD 2 To"/.Trashes/501
Password:
rm: /Volumes/WD 2 To/.Trashes/501/TRIER: Directory not empty
rm: /Volumes/WD 2 To/.Trashes/501: Directory not empty
MBPdeAlexandre:~ alexandre$
 
Non - toujours pas.

Alors --> 3è tentative.

En laissant ton DDE attaché au Mac > tu vas re-démarrer > en tenant pressées les 2 touches ⌘R (cmd R) depuis l'écran noir jusqu'à l'affichage de la  = démarrage en mode Recovery.

Parvenu à l'écran où s'affiche une fenêtre de 4 Utilitaires macOS > va à la barre supérieure de menus de l'écran > menu Utilitaires > sous-menu Terminal (c'est le «Terminal» du Recovery OS actuellement démarré > où l'utilisateur par défaut est root - donc pas de sudo ici).

Saisis à la main la commande (avec soin : il ne faut pas se rater avec une commande rm = remove de suppression) :
Bloc de code:
rm -rf /Volumes/"WD 2 To"/.Trashes/501

  • comme tu es root dans ce Terminal > pas besoin de sudo ni d'authentification
  • cette commande supprime le sous-dossier 501 du volume WD 2 To

=> passe derrière une commande :
Bloc de code:
ls /Volumes/"WD 2 To"/.Trashes
et vérifie si un élément 501 est listé en retour ou aucun. Si aucun > la commande est passée.
 
IMG_4801.jpg
 
:coucou: shopgame

C'est pas banal > ton affaire.

Je suis sûr de la validité de mes commandes > car je les ai testées sur le dossier 501 (ou ses contenus) du volume d'une clé USB. L'option -r (comme recursive) est parfaitement à même de gérer des objets qui sont des dossiers et pas de simples fichiers.

C'est pourquoi je n'arrive pas à interpréter le sens du message d'erreur qui revient comme un leitmotiv :
Bloc de code:
directory not empty
(dossier non vide) - le fait qu'un dossier soit rempli ne créant nul obstacle à une commande rm récursive.

Je suppose que tu as ré-intégré ta session dans l'OS. Relance donc le «Terminal» (at: Applications > Utilitaires) et passe la commande :
Bloc de code:
sudo mv /Volumes/"WD 2 To"/.Trashes/501/TRIER /Volumes/"WD 2 To"

  • cette commande déplace l'élément TRIER de la corbeille d'utilisateur 501 dans l'espace-racine du volume WD 2 To

Pour vérifier si elle a bien été honorée > passe derrière les commandes :
Bloc de code:
ls /Volumes/"WD 2 To"/TRIER
sudo ls /Volumes/"WD 2 To"/.Trashes/501

  • si TRIER a bien été déplacé dans l'espace du volume --> la 1ère commande retournera un : /Volumes/"WD 2 To"/TRIER et la 2è commande ne le listera pas

  • si TRIER est resté dans la corbeille 501 --> la 1ère commande retournera un : no such file or directory et la 2è commande le listera dans le dossier 501
 
Dernière édition par un modérateur:
Démarrer en mode sans extensions (maintenir la touche majuscule)

Brancher le disque dur

Vider la corbeille

Après le démarrage en mode sans échec, le disque dur externe n'apparaît pas dans le finder après l'avoir branché, et rien n'apparaît dans la corbeille. Mais il apparaît bien dans l'utilitaire de disque (voir la capture).

Capture_d_e_cran_2017-09-15_a_20.44.35.png
-
Je vais tenter cela.
-
@macomaniac

Bloc de code:
Last login: Fri Sep 15 20:55:43 on ttys000
MBPdeAlexandre:~ alexandre$ sudo mv /Volumes/"WD 2 To"/.Trashes/501/TRIER /Volumes/"WD 2 To"
Password:
mv: /Volumes/WD 2 To/.Trashes/501/TRIER: No such file or directory
MBPdeAlexandre:~ alexandre$ ls /Volumes/"WD 2 To"/TRIER
MBPdeAlexandre:~ alexandre$ sudo ls /Volumes/"WD 2 To"/.Trashes/501
MBPdeAlexandre:~ alexandre$
 
Dernière édition:
Le retour des commandes montre qu'il n'existe plus d'élément TRIER dans ta corbeille d'utilisateur 501 du volume WD 2 To.

=> es-tu sûr que le problème ne soit pas résolu ?
 
J'ai vu le dossier TRIER dans le niveau le plus haut du DD, je me suis dit que j'avais du faire un CMD+Z par erreur de la corbeille vers le DD mais non, j'ai mis de nouveau le dossier dans la corbeille, et refait les manips et en fait c'est la commande
Bloc de code:
sudo mv /Volumes/"WD 2 To"/.Trashes/501/TRIER /Volumes/"WD 2 To"
qui déplace le dossier de la corbeille vers le DD (à sa "source").

Edit : Je ne peux toujours pas vider la corbeille avec le fichier.