Wie entferne ich ein leeres Verzeichnis (btrfs-Dateisystem)?

Wie entferne ich ein leeres Verzeichnis (btrfs-Dateisystem)?

Ich verwende das experimentelle btrfsDateisystem.

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 emptyfolderaber 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 emptyfoldergibt 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 checkauf 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 --repairsofern Sie eine ausreichend aktuelle Version von btrfs-progs ausführen.

Beachten Sie, dass dies btrfs check --repairnicht 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 cdSie, das leere Verzeichnis zu verlassen und lsof +D /path/to/emptydires 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 lsAusgabe (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 fsckes wahrscheinlich auch ausführen und sehen, ob das hilft.

verwandte Informationen