%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 файла в этой папке? Я пытаюсь удалить ее как пользователь 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? Как его удалить?
Я пробовал fuser -uv /dev/disk, но безрезультатно. Нет ни одного процесса, который обращался бы к папке. Я переместил папку в tmp.
решение1
FAQ по Btrfs - Не могу удалить пустой каталог:
Первый случай, если вы получаете:
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
выйти из emptydir и запустить lsof +D /path/to/emptydir
его, чтобы увидеть, что его открыло. В зависимости от того, что это за каталог и как он используется, возможно, что-то открывает и закрывает каталог очень быстро, и вы просто случайно ловите это, когда в нем ничего нет при запуске ls, но что-то есть при запуске rm -fr emptydir
. В этом случае это не должно иметь никакого значения, но попробуйте также запустить rmdir emptydir
.
Общее число в верхней части вывода ls
(полагаю, insgesamt означает total?) указывает на пустой каталог.
Я думаю, что знание типа файловой системы тоже может быть полезным. Вы, вероятно, также захотите запустить fsck
его и посмотреть, поможет ли это.