%20%E3%82%92%E5%89%8A%E9%99%A4%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%81%84%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
実験的なファイルシステムを使用していますbtrfs
。
私のディレクトリは次のようになります:
ls -la empytfolder
total 4
drwxr-xr-x 1 root root 0 19. Mär 14:00 .
drwxr-xr-x 1 root root 298 19. Mär 13:59 ..
削除しようとしましたrm -rf emptyfolder
が、エラーが発生しますrm: cannot remove directory: directory not empty?
。空のフォルダーを削除するにはどうすればよいですか? このフォルダーに 4 つのファイルがあるのはなぜですか? ルート ユーザーとして削除しようとしています。私のファイルシステムは btrfs です。
stat emptyfolder
私に与えてくれるもの:
Datei: „emptyfolder“
Größe: 0 Blöcke: 0 EA Block: 4096 Verzeichnis
Gerät: 21h/33d Inode: 256 Verknüpfungen: 1
Zugriff: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Zugriff : 2012-03-19 14:00:28.205205566 +0100
Modifiziert: 2012-03-19 14:00:23.925025572 +0100
Geändert : 2012-03-19 14:00:23.925025572 +0100
Geburt : -
システム クロックに問題があります。間違った時刻が表示されることがあります。
$ lsof +D emptyfolder
lsof: WARNING: can't stat() fuse.gvfs-fuse-daemon file system /home/user
/.gvfs Output information may be incomplete.
この gvfs-fuse-daemon とは何ですか? どうすれば削除できますか?
fuser -uv /dev/disk を試しましたが、効果はありませんでした。フォルダーにアクセスしているプロセスはありません。フォルダーを tmp に移動しました。
答え1
最初のケース、 あなたが取得する場合:
rmdir: failed to remove ‘emptydir’: Operation not permitted
これはおそらく、「emptydir」が実際にはサブボリュームであるためです。
これが当てはまるかどうかは、次の方法で確認できます。
btrfs subvolume list -a /mountpoint
サブボリュームを削除するには、次のコマンドを実行する必要があります。
btrfs subvolume delete emptydir
2番目のケース、 あなたが取得する場合:
rmdir: failed to remove ‘emptydir’: Directory not empty
その場合、i_size がゼロでない空のディレクトリが存在する可能性があります。
これが当てはまるかどうかは、次の方法で確認できます。
stat -c %s emptydir 3196 <-- unexpected non-zero size
その (マウントされていない) ファイルシステムで実行すると
btrfs check
、問題が確認され、他の問題のあるディレクトリ (存在する場合) が一覧表示されます。同様の出力が得られます(抜粋):
checking fs roots root 5 inode 557772 errors 200, dir isize wrong root 266 inode 24021 errors 200, dir isize wrong ...
btrfs check --repair
このようなエラーは、btrfs-progs の最新バージョンを実行すれば修正できるはずです。
btrfs check --repair
場合によっては、問題を解決するどころか、問題を悪化させる可能性があるため、軽々しく使用しないでください。
答え2
私はbtrfsパーティションで同様の症状を経験しました。
btrfs check --repair /dev/sdXY
問題は解決しました。見つかったエラーは次の形式です:
root X inode Y errors 200, dir isize wrong
そして
root X inode Y errors 80, file extent overlap
しかし、2 番目の種類のエラーは修復後も残っており、心配になってきました。
答え3
ReadyNAS ボックスの孤立したディレクトリでこの問題が発生しました。共有は GUI に表示されなくなりましたが、/data の下のディレクトリはこれまで存在していました。そのため、このフォルダを削除したかったのですが、rmdir が機能しません。
スナップショットを一つずつ削除しました
cd /data
btrfs subvolume delete ./VirtualBox1/.snapshots/309/snapshot
...
btrfs subvolume delete ./VirtualBox1/.snapshots/2/snapshot
btrfs subvolume delete ./VirtualBox1/.snapshots/1/snapshot
btrfs subvolume delete ./VirtualBox1/.snapshots
すべてのスナップショットを削除した後、「フォルダ」自体を削除することができました
btrfs subvolume delete ./VirtualBox1
答え4
cd
空のディレクトリから を実行して、何lsof +D /path/to/emptydir
が開いているか確認してみてください。ディレクトリの内容と使用方法によっては、何かがディレクトリを非常に高速に開閉していて、ls の実行時には何も入っていないのに の実行時には何か入っているという状況に遭遇するかもしれませんrm -fr emptydir
。この場合は何も変わらないはずですが、 も実行してみてくださいrmdir emptydir
。
出力の先頭にある合計数ls
(insgesamt は合計を意味すると思います) は、空のディレクトリを示しています。
ファイルシステムの種類を知っておくことも役立つと思います。また、実際fsck
に実行してみて、それが役立つかどうかを確認してみるのもよいでしょう。