Beim Spielen mit e2fsprogs debugfs
wurde aus Versehen eine Datei mit dem Namen filen/ame
erstellt. Offensichtlich dient der Schrägstrich /
als spezielles Trennzeichen in Pfadnamen.
Immer noch debugfs
wollte ich die genannte Datei entfernen filen/ame
, hatte aber wenig Erfolg, da das /
Zeichen nicht als Teil des Dateinamens interpretiert wird?
Bietet Debugfs eine Möglichkeit, diese Datei mit dem Schrägstrich zu entfernen? Wenn das so ist, wie?
Ich benutzte:
cd /tmp
echo "content" > contentfile
dd if=/dev/zero of=/tmp/ext4fs bs=1M count=50
mkfs.ext4 /tmp/ext4fs
debugfs -w -R "write /tmp/contentfile filen/ame" /tmp/ext4fs
debugfs -w -R "ls" /tmp/ext4fs
welche Ausgänge:
debugfs 1.43.4 (31-Jan-2017)
2 (12) . 2 (12) .. 11 (20) lost+found 12 (980) filen/ame
Ich habe Folgendes versucht, um die filen/ame
Datei zu entfernen :
debugfs -w -R "rm filen/ame" /tmp/ext4fs
aber das hat nicht funktioniert und nur produziert:
debugfs 1.43.4 (31-Jan-2017)
rm: File not found by ext2_lookup while trying to resolve filename
Gibt es neben der manuellen Änderung des Inhalts des Verzeichnisknotens eine Möglichkeit, die Datei mit zu entfernen debugfs
?
filen\/ame
) zu umgehen?Antworten:
Wenn Sie eine Lösung wünschen und nicht nur ausprobieren,
debugfs
können Sie sich von fsck die Arbeit abnehmen lassen. Markieren Sie das Dateisystem als fehlerhaft und führen Sie es ausfsck -y
, um den Dateinamen zu ändern:quelle
e2fsck
hat eine-f
orce-Option, die zu einer vollständigen Überprüfung führt, „auch wenn das Dateisystem sauber zu sein scheint“.Weiterbildungen zum Thema fsck working; wenn es aus irgendeinem Grund nicht geklappt hat,
ls -i1
folgtumount
und dann die Antwortclri
.Ref: http://docstore.mik.ua/orelly/unix/upt/ch23_13.htm
Ich habe diese Methode tatsächlich getestet.
quelle
clri
es sich nicht um einen separaten Befehl handelt (wie bei einigen anderen Unix-Systemen), sondern um einen Unterbefehldebugfs
.Entry 'filen/ame' in / (2) has deleted/unused inode 12. Clear<y>?
anstelle der in der anderen Antwort angegebenen behebt -, aber das Ausführen des Befehls clri ist ein zusätzlicher Schritt. Es scheint keinen Weg zu geben, dies rein aus debugfs heraus zu lösen.Wenn Sie die Datei in ein Verzeichnis verschieben, können Sie das Verzeichnis mit der Datei darin löschen.
quelle
/
.