空のディレクトリ(btrfsファイルシステム)を削除する方法は?

空のディレクトリ(btrfsファイルシステム)を削除する方法は?

実験的なファイルシステムを使用しています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とは何ですか?どうすれば削除できますか?

私はfusions -uv /dev/diskを試しましたが、何の役にも立ちませんでした。どのプロセスもフォルダにアクセスしません。フォルダをtmpに移動しました。

ベストアンサー1

Btrfs FAQ - 空のディレクトリを削除できません。

最初のケース、次のような場合:

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 --repairbtrfs-progsの新しいバージョンを実行している場合は、このようなエラーを修正できます。

btrfs check --repair場合によっては、問題を解決する場合は、むしろ問題を悪化させる可能性があるため、軽く使用してはいけないことに注意してください。

おすすめ記事