
Solía preguntarme por qué eliminar directorios a través de PHP o Shell no era tan fácil como lo era en Windows con solo hacer clic en eliminar. Ahora me doy cuenta de que eliminar es simplemente desvincular archivos de la tabla de asignación de archivos, por lo que para eliminar un directorio, debe desvincular todos los archivos que contiene.
¿Es posible alguna vez eliminar la entrada del directorio, pero no las de los archivos que contiene? ¿Los sistemas operativos comprueban periódicamente si hay archivos a los que no se puede acceder en el sistema de archivos?
Respuesta1
Muchos UNIX tienen un unlink
comando que permitirá al usuario root
desvincular un directorio, pero nonodesvincular recursivamente el contenido del directorio, por lo que es muy peligroso. Si eso sucede alguna vez, utilícelo fsck
para recuperar el directorio desconectado, que aparecerá en la lost+found
carpeta del sistema de archivos con un nombre aleatorio (ya que el nombre se perdió cuando unlink
sucedió).
Respuesta2
Sí, es posible, bastante improbable, ya que existen procedimientos en el sistema operativo para evitar que esto suceda, pero los errores del disco y las rarezas pueden causar que sucedan cosas.
Esto es generalmente lo quechkdsk,fsck, y una serie de otras utilidades están diseñadas para hacerlo. Leen las tablas de asignación y las comparan con las entradas de archivos conocidas... cualquier problema hace que se tomen algunas medidas.
En Windows, normalmente puede indicarle a Windows que desea realizar una verificación mirando en elPropiedadesopción cuando hace clic derecho en los iconos de la unidad. ÉlpodríaLuego haga la verificación, aunque Windows parece favorecer las verificaciones del disco de inicio, y le dirá que lo hará en el próximo reinicio.
En Linux,... puedes lastimarte seriamente jugando con la utilidad fsck en un sistema activo, razón por la cual las máquinas Linux generalmente siempre hacen sus comprobaciones del sistema de archivos (fsck!) durante el inicio. El simple hecho de reiniciar a menudo provocará que se realice una verificación. (¡aunque sí sé que desconectar la alimentación de mi servidor doméstico cuando falla el UPS también activa uno!) (el sistema de archivos está marcado como sucio)
¿OSX? Ni idea. Me imaginé que tomaste un Latté cerca de la máquina y solucionó cualquier problema conectándose con el GeniusBar más cercano. (Creo que probablemente también necesites estar en o cerca de un Starbucks™)