%3F.png)
Ich verwende das experimentelle btrfs
Dateisystem.
Mein Verzeichnis sieht folgendermaßen aus:
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 ..
Ich versuche, es zu entfernen, rm -rf emptyfolder
aber es erscheint der Fehler „ rm: cannot remove directory: directory not empty?
Wie kann ich meinen leeren Ordner entfernen/löschen? Warum habe ich 4 Dateien in diesem Ordner? Ich versuche, ihn als Root-Benutzer zu löschen. Mein Dateisystem ist btrfs.“
stat emptyfolder
gibt mir:
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 : -
Ich habe Probleme mit meiner Systemuhr. Manchmal zeigt sie die falsche Zeit an.
$ lsof +D emptyfolder
lsof: WARNING: can't stat() fuse.gvfs-fuse-daemon file system /home/user
/.gvfs Output information may be incomplete.
Was ist dieser gvfs-fuse-daemon? Wie kann ich ihn löschen?
Ich habe fuser -uv /dev/disk ohne Erfolg ausprobiert. Es gibt keinen Prozess, der auf den Ordner zugreift. Ich habe den Ordner nach tmp verschoben.
Antwort1
Btrfs FAQ - Ich kann ein leeres Verzeichnis nicht löschen:
Erster Fall, wenn du bekommst:
rmdir: failed to remove ‘emptydir’: Operation not permitted
dann liegt dies wahrscheinlich daran, dass „emptydir“ tatsächlich ein Untervolume ist.
Ob dies der Fall ist, können Sie prüfen mit:
btrfs subvolume list -a /mountpoint
Um das Untervolume zu löschen, müssen Sie Folgendes ausführen:
btrfs subvolume delete emptydir
Zweiter Fall, wenn du bekommst:
rmdir: failed to remove ‘emptydir’: Directory not empty
dann verfügen Sie möglicherweise über ein leeres Verzeichnis mit einer i_size ungleich Null.
Ob dies der Fall ist, können Sie prüfen mit:
stat -c %s emptydir 3196 <-- unexpected non-zero size
Durch die Ausführung
btrfs check
auf diesem (nicht gemounteten) Dateisystem wird das Problem bestätigt und es werden weitere problematische Verzeichnisse (sofern vorhanden) aufgelistet.Sie erhalten eine ähnliche Ausgabe (Auszug):
checking fs roots root 5 inode 557772 errors 200, dir isize wrong root 266 inode 24021 errors 200, dir isize wrong ...
Solche Fehler sollten behebbar sein,
btrfs check --repair
sofern Sie eine ausreichend aktuelle Version von btrfs-progs ausführen.Beachten Sie, dass dies
btrfs check --repair
nicht leichtfertig verwendet werden sollte, da es in einigen Fällen ein Problem verschlimmern kann, anstatt es zu beheben.
Antwort2
Ich hatte ähnliche Symptome mit einer btrfs-Partition und
btrfs check --repair /dev/sdXY
hat das Problem für mich behoben. Die gefundenen Fehler waren von folgender Form:
root X inode Y errors 200, dir isize wrong
Und
root X inode Y errors 80, file extent overlap
Der zweite Fehlertyp blieb allerdings auch nach der Reparatur bestehen, was mir allmählich Sorgen bereitete.
Antwort3
Hatte dieses Problem mit einem verwaisten Verzeichnis auf einer ReadyNAS-Box. Die Freigabe war in der GUI nicht mehr sichtbar, aber das Verzeichnis unter /data war bisher vorhanden. Also wollte ich diesen Ordner entfernen, aber rmdir funktioniert nicht.
Ich habe Schnappschuss für Schnappschuss gelöscht
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
Nachdem ich alle Snapshots gelöscht hatte, konnte ich den "Ordner" selbst entfernen
btrfs subvolume delete ./VirtualBox1
Antwort4
Versuchen cd
Sie, das leere Verzeichnis zu verlassen und lsof +D /path/to/emptydir
es auszuführen, um zu sehen, was es geöffnet hat. Je nachdem, um welches Verzeichnis es sich handelt und wie es verwendet wird, öffnet und schließt möglicherweise etwas das Verzeichnis sehr schnell und Sie bemerken es zufällig, wenn es beim Ausführen von ls nichts enthält, aber beim Ausführen von etwas rm -fr emptydir
. In diesem Fall sollte es keinen Unterschied machen, aber versuchen Sie auch, auszuführen rmdir emptydir
.
Die Gesamtzahl oben in Ihrer ls
Ausgabe (ich nehme an, mit „insgesamt“ ist „total“ gemeint?) weist auf ein leeres Verzeichnis hin.
Ich denke, es kann auch hilfreich sein, den Dateisystemtyp zu kennen. Sie möchten fsck
es wahrscheinlich auch ausführen und sehen, ob das hilft.