%EB%A5%BC%20%EC%A0%9C%EA%B1%B0%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%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
Btrfs FAQ - 빈 디렉터리를 삭제할 수 없습니다.
첫 번째 사례, 다음을 얻는 경우:
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가 0이 아닌 빈 디렉토리가 있을 수 있습니다.
다음과 같은 경우인지 확인할 수 있습니다.
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
그것을 실행하고 그것이 도움이되는지 확인하고 싶을 것입니다.