.fuse_hidden *ファイルを削除する方法は?


34

いくつかのWindowsマシンといくつかのフォルダーを共有するように構成されたSambaサーバーを実行する小さなLinuxサーバー(Debian Squeeze)があります。Windowsからディレクトリの1つを削除しようとしたときに、「フォルダを削除できません」というエラーが表示されました。

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が関係しており、コンソールしか持っていません。

どんな提案も大歓迎です。


3
fuseデーモンがアクティブになっているようです。ファイルを削除する前に停止してください。
ott--

その間にコメントを変更しました。
ott--

それが私の最初の考えでしたが、停止するFuseサービスが見つかりませんでした。代わりにSambaを再起動し、問題は解決し、ファイルはなくなりました。ありがとう。
ランド

rm dir-name -rf
ハウケレイジング

回答:


52

これは、NFSマウントで別のシステムが開いているファイルを削除した場合に起こることと似ています。問題は、「リンクカウント」が1を超えている間にファイルがファイルシステムから削除されていることです。これは、他のプロセスがファイルを開いたままにしていることを意味します。

  • ファイルが物理的に存在するシステムにログインします。(ネットワークマウントなし)
  • 実行lsof dir-name/.fuse_hidden000bd8c100000185して、ファイルハンドルを開いたままにしているプロセスを見つけます。
  • 意味がある場合はそれらのプロセスを終了するか、プロセスを終了せずに開いているファイルハンドルを「正常に」解放するために実行できる手順を見つけます。

通常、別のプロセスが開いているローカルファイルシステム上のファイルを削除すると、OSは要求に応じてディレクトリツリーから削除しますが、ツリーが指すiノードはオペレーティングシステムによって使用中と見なされます。ファイルが開かれるたびに、その「リンクカウント」が1ずつ増加し、そのリンクカウントがゼロになったときにのみスペースが本当に解放されます。

この性質の問題に遭遇したとき、それはOSが何らかの理由でディレクトリツリーからそのファイルを削除しないことを決定したことを意味します:通常、それはまだできないものによってアクセスされる必要があると信じる理由があるからです直接iノード番号を使用します。最初は準拠しているように見えるかもしれませんが、OSは隠されたドットプレフィックスを持つように名前を変更し、ファイルシステムパスアドレッシングの何らかの形式でアクセスできるようにします。リンクカウントがゼロに達してもスペースは解放されますが、そのオブジェクトはリンクがなくなるまでディレクトリに残ります。


まだファイル(この場合はSamba)を使用しているいくつかのサービスに関係していると思い、lsofを忘れていました。
ランド

問題に私を導きます。lsofどのプロセスがまだファイルを読んでいるかを特定するのに役立ちました、それですべてを削除することができました!
ThanksForAllTheFish 14年

私には問題がlsofありfuserます、そのファイルのプロセスを提示しません、提案はありますか?
mxmlnkn

0

提案をありがとう、しかし何も私のために働いた。しかし、解決策を見つけました。外部SSDをWindowsを実行しているPCに移動しました。ファイルエクスプローラーを使用して([非表示のアイテム]をオンにした状態で).Trashesディレクトリに移動すると、.fuser_hiddenファイルを削除できました。

お役に立てれば!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.