我正在使用实验性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个文件?我正在尝试以 root 用户身份删除它。我的文件系统是 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
第一个案例, 如果你得到:
rmdir: failed to remove ‘emptydir’: Operation not permitted
那么这可能是因为“emptydir”实际上是一个子卷。
您可以通过以下方式检查是否属于这种情况:
btrfs subvolume list -a /mountpoint
要删除子卷,您必须运行:
btrfs subvolume delete emptydir
第二种情况, 如果你得到:
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
即使修复后,第二种错误仍然存在,这让我开始担心。
答案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
它,看看是否有帮助。