Obtuve el inodo de un archivo en el kernel de Linux, quiero eliminar el archivo por el inodo.
¿Necesito desvincular cada dentry del inodo? ¿O necesito desvincular algún dentry?
¿Qué cerraduras debo usar para proteger qué?
Respuesta1
Las llamadas de eliminación de archivos portátiles, unlink(), remove() y contenedores de nivel superior, casi todos toman nombres de ruta. Los inodos son principalmente un detalle de implementación.
Para hacer esto en Shell, utilice herramientas como GNU.encontrar.
find /tmp -type f -inum $INODE
Reemplace /tmp
con la ruta a buscar, $INODE
con el número. Agregue -delete
si desea que los resultados se desvinculen. Se pueden encontrar varios nombres del mismo inodo.
Como este método atraviesa todos los archivos, no es eficiente.
Respuesta2
En Linux, no puedes eliminar un archivo.
Lo que tupoderLo que debe hacer es eliminar todas las referencias a él, y luego el sistema de archivos eliminará automáticamente el espacio y marcará el inodo como no utilizado.
Pero tenga en cuenta que se puede hacer referencia a los archivos mediante procesos en ejecución. El archivo seguirá existiendo aunque nada en el sistema de archivos apunte a él. Hasta que el proceso finalice o cierre el archivo, éste seguirá existiendo.