Pour le bénéfice des lecteurs :
Méfiez-vous de rm -rf
dans un tel cas ! Cela peut créer des problèmes ailleurs s'il s'agit d'un partage de réseau ! Vous êtes prévenus !
Dans presque tous les cas, si un directory
semble être vide, utilisez rmdir directory
ou peut-être sudo rmdir directory
. Ne pas utiliser rm
(ou del
sous Windows). Si cela ne fonctionne pas, vous devez trouver ce qui bloque cette demande, y remédier, puis réessayer l'opération. rmdir
.
Veuillez noter que je ne connais pas OS-X, mais je pense que les choses y sont très similaires au comportement d'Unix/BSD.
Il est très probable que le répertoire en question était juste un point de montage (à partir des encfs) ou résidant sur un point de montage qui est devenu en lecture seule ou bloqué dans un état inapproprié (ce qui a empêché la suppression du répertoire). Si vous forcez maintenant la suppression du répertoire, de très mauvaises choses peuvent se produire.
Dans le bon cas, le répertoire était vraiment vide, donc le supprimer (en détruisant le montage, etc.) n'a pas causé de dommages supplémentaires. Dans le mauvais cas, il n'était pas vide, il semblait juste l'être, ce qui signifie que vous avez mis à la poubelle quelque chose que vous ne vouliez peut-être pas tuer. Tout dépend du type de support, des pilotes utilisés, etc.
Si les choses sont mises en œuvre raisonnablement bien, normalement rien de mauvais ne devrait se produire. Mais ce n'est pas le cas. Les choses sont déjà dans un état bizarre, ce qui signifie : Quelque chose ne va pas, alors mieux vaut ne pas essayer de tout mélanger encore plus ! Si quelque chose est fissuré, n'importe quel contact incorrect peut le briser.
Par exemple, si vous rencontrez une condition de course sur un partage réseau, il se peut que votre rm -rf
supprime les données qui viennent d'être copiées sur le partage par quelqu'un d'autre.
Cependant rmdir
est garanti pour ne jamais faire de mal, à part supprimer les répertoires vraiment vides. Ceci est même vrai sur NFS, car NFS ne garantit un comportement réellement atomique que sur mkdir
et rmdir
mais nulle part ailleurs.
FYI :
Vous pouvez détecter un point de montage en utilisant l'outil mountpoint directory
. Vous pouvez également examiner la sortie de mount
et essayez d'y repérer vos montures. Mais attention, au moins sous Linux, cela pourrait mentir. En utilisant le mountpoint
plus fiable mais moins pratique.
Dans ce cas vous avez trouvé le point de montage, vous pouvez le démonter et ensuite supprimer le répertoire, c'est la séquence suivante :
umount directory rmdir directory
Si nécessaire, utilisez sudo
comme d'habitude.
Notes :
-
Les partages réseau peuvent refuser rmdir
(et tout le reste) en raison des droits d'accès.
-
Les systèmes de fichiers défectueux peuvent refuser rmdir
en fonction de la stratégie d'échec. Peut-être verrez-vous un message raisonnable dans ce cas, peut-être pas.
-
Sous Linux (et probablement sous tout autre système d'exploitation moderne), vous pouvez également restreindre l'accès en utilisant différents moyens (comme monter quelque chose en lecture seule, des capacités comme dans SeLinux, etc.) ). Cela signifie alors que vous ne voyez pas qu'il s'agit d'un point de montage, et que vous ne voyez rien d'anormal, mais que cela ne fonctionne tout simplement pas. Dans ce cas, vous devez chercher une autre raison, qui peut être très profondément enfouie dans le système d'exploitation. Cela dépend de l'outil si vous voyez un message d'erreur raisonnable. Vous pouvez également jeter un coup d'œil au syslog/kernel-log, comme par exemple dmesg
sous Linux (désolé, je ne connais pas l'équivalent sous OS-X).
-
Notez que le verrouillage obligatoire des fichiers peut également être une source. Bien que cela soit normal sous Windows, ce n'est pas le cas sous Unix et je ne l'ai jamais entendu pour les répertoires. Les verrouillages obligatoires de fichiers sont couverts par POSIX, mais ils sont optionnels.
-
Très souvent, dans de tels cas, le répertoire en question se trouve sur un système de fichiers différent de celui que vous pensiez. Vous pouvez savoir lequel, avec la commande df directory
(Je pense que c'est la même chose sous OS-X).
-
Vous pouvez inspecter plus en profondeur avec des outils comme stat
o statfs
sur le répertoire. Cependant, ces outils sont un peu bas de gamme pour les personnes normales, et bien souvent, ils sont bien cachés aux utilisateurs normaux.
-
Les répertoires peuvent contenir des fichiers avec des noms bizarres. Comme un fichier qui efface immédiatement la sortie du terminal, pour faire croire qu'il n'est pas là. Essayez quelque chose comme ls -al | less
ou utiliser quelque chose comme MidnightCommander mc
.
Il y a une foule d'autres possibilités, y compris les insectes, les haxors, les extraterrestres, ou peut-être des choses plus exotiques comme les fées. Mais en général, il n'est pas sage de commencer à chercher là, mais plutôt d'essayer de trouver l'erreur de votre côté, car "errare humanum est".