Grając z e2fsprogs debugfs
, przez zmianę / wypadek utworzono plik o nazwie filen/ame
. Oczywiście ukośnik /
służy jako specjalny znak separatora w ścieżkach.
Nadal za pomocą debugfs
chciałem usunąć plik o nazwie filen/ame
, ale miałem mały sukces, ponieważ /
znak nie jest interpretowany jako część nazwy pliku?
Czy debugfs zapewnia sposób na usunięcie tego pliku zawierającego ukośnik? Jeśli tak to jak?
Użyłem:
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
które wyjścia:
debugfs 1.43.4 (31-Jan-2017)
2 (12) . 2 (12) .. 11 (20) lost+found 12 (980) filen/ame
Próbowałem wykonać następujące czynności, aby usunąć filen/ame
plik:
debugfs -w -R "rm filen/ame" /tmp/ext4fs
ale to nie zadziałało i spowodowało jedynie:
debugfs 1.43.4 (31-Jan-2017)
rm: File not found by ext2_lookup while trying to resolve filename
Czy oprócz ręcznej zmiany zawartości węzła katalogu istnieje sposób na usunięcie pliku za pomocą debugfs
?
filen\/ame
) nie działa?Odpowiedzi:
Jeśli chcesz naprawić, a nie tylko próbujesz
debugfs
, możesz poprosić fsck o wykonanie pracy za Ciebie. Oznacz system plików jako brudny i uruchom,fsck -y
aby zmienić nazwę pliku:źródło
e2fsck
ma-f
opcję orce, która doprowadzi do pełnego sprawdzenia „nawet jeśli system plików wydaje się czysty”.Gratulujemy pracy fsck; jeśli z jakiegoś powodu nie działa odpowiedź jest
ls -i1
następnieumount
i potemclri
.Patrz: http://docstore.mik.ua/orelly/unix/upt/ch23_13.htm
Właściwie przetestowałem tę metodę.
źródło
clri
nie jest to osobne polecenie (jak ma to miejsce w niektórych innych systemach uniksowych), to wewnątrz niego jest komendadebugfs
.Entry 'filen/ame' in / (2) has deleted/unused inode 12. Clear<y>?
zamiast podanym w drugiej odpowiedzi - ale wykonanie clri jest dodatkowym krokiem. Wydaje się, że nie ma sposobu, aby rozwiązać ten problem wyłącznie z poziomu debugfs.Jeśli przeniesiesz plik do katalogu, możesz następnie usunąć katalog z plikiem w nim zawartym.
źródło
/
w nim znajduje.