Jugando con e2fsprogs debugfs
, por cambio / accidente, filen/ame
se creó un archivo llamado . Obviamente, el carácter de barra diagonal /
sirve como el carácter separador especial en los nombres de ruta.
Todavía usando debugfs
, quería eliminar el archivo nombrado filen/ame
, pero tuve poco éxito, ya que el /
carácter no se interpreta como parte del nombre del archivo.
¿Debugfs proporciona una forma de eliminar este archivo que contiene la barra inclinada? ¿Si es así, cómo?
Solía:
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
que salidas:
debugfs 1.43.4 (31-Jan-2017)
2 (12) . 2 (12) .. 11 (20) lost+found 12 (980) filen/ame
Intenté lo siguiente para eliminar el filen/ame
archivo:
debugfs -w -R "rm filen/ame" /tmp/ext4fs
pero esto no funcionó y solo produjo:
debugfs 1.43.4 (31-Jan-2017)
rm: File not found by ext2_lookup while trying to resolve filename
Además de cambiar el contenido del nodo del directorio manualmente, ¿hay alguna forma de eliminar el archivo usando debugfs
?
filen\/ame
) no funciona?Respuestas:
Si desea una solución y no solo está probando
debugfs
, puede hacer que fsck haga el trabajo por usted. Marque el sistema de archivos como sucio y ejecútelofsck -y
para cambiar el nombre del archivo:fuente
e2fsck
tiene una-f
opción de orce que llevará a una verificación completa "incluso si el sistema de archivos parece limpio"Felicitaciones por trabajar fsck; si por alguna razón no funcionó, la respuesta es
ls -i1
seguida porumount
y luegoclri
.Ref: http://docstore.mik.ua/orelly/unix/upt/ch23_13.htm
De hecho, he probado este método.
fuente
clri
no es un comando separado (como lo es en algunos otros sistemas Unix), es un subcomando dentrodebugfs
.Entry 'filen/ame' in / (2) has deleted/unused inode 12. Clear<y>?
lugar del indicado en la otra respuesta, pero hacer el clri es un paso adicional. No parece haber una manera de resolver esto únicamente desde dentro de debugfs.Si mueve el archivo a un directorio, puede eliminar el directorio que contiene el archivo.
fuente
/
.