いくつかのWindowsマシンといくつかのフォルダを共有するように設定されたSambaサーバーを実行する小さなLinuxサーバー(Debian Squeeze)があります。 Windowsからいずれかのディレクトリを削除しようとすると、「フォルダを削除できません」というエラーが表示されました。
Linuxのコンソールからディレクトリを削除しようとすると、同様のエラーが発生しました。
# rm dir-name -rf
rm: cannot remove `dir-name': Directory not empty
ディレクトリの内容を一覧表示したところ、.Fuse_hiddenという名前のファイルに続いて16進数(000bd8c100000185)が見つかりました。
# ls -la dir-name
-rwxrwxrwx 1 root root 5120 Feb 13 11:46 .Fuse_hidden000bd8c100000185
.Fuse_hiddenファイルを削除しようとしましたが、すぐに新しいファイルが作成されました(16進数の変更に注意してください)。
# rm dir-name/.Fuse_hidden000bd8c100000185
# ls -la dir-name
-rwxrwxrwx 1 root root 5120 Feb 13 11:46 .Fuse_hidden000bd8c100000186
また、Midnight Commanderを使用してファイルを削除しようとしましたが、成功しませんでした。
これまでに見つけた他のソリューションにはGUIが含まれ、コンソールしかありません。
任意の提案をいただければ幸いです。
これは、NFSマウントで別のシステムが開いているファイルを削除した場合と同様です。問題は、「リンクカウント」が1を超えているときにファイルシステムからファイルが削除されたことです。これは、他のプロセスがファイルを開いたままにしていることを意味します。
lsof dir-name/.Fuse_hidden000bd8c100000185
ファイルハンドルを開いたままにしているプロセスを確認します。通常、別のプロセスが開いているローカルファイルシステム上のファイルを削除すると、OSは要求に応じてそれをディレクトリツリーから削除しますが、ツリーが指しているiノードは引き続きオペレーティングシステムで使用されていると見なされます。ファイルが開かれるたびに、その「リンクカウント」は1ずつ増加し、そのリンクカウントがゼロに達したときにのみ、スペースが本当に解放されます。
この種の問題に遭遇した場合、それはOSが何らかの理由でnotをそのファイルをディレクトリツリーから削除することを決定したことを意味します。直接のiノード番号を利用できないものによってアクセスされます。最初は準拠しているように見えるかもしれませんが、舞台裏では、OSは非表示のドットプレフィックスを持つように名前を変更しています。リンク数がゼロに達した場合でもスペースは解放されますが、そのオブジェクトはリンクがなくなるまでディレクトリに残ります。
提案をありがとう、しかし私には何もうまくいきませんでした。しかし、解決策を見つけました。Windowsを実行しているPCに外付けSSDを移動しました。ファイルエクスプローラーを使用して([非表示の項目]がオンになっている).Trashes
ディレクトリに移動すると、.fuser_hidden
ファイルを削除できました。
お役に立てれば!