Creé un archivo en el directorio de inicio.
touch demo
echo "This is demo" > demo
Ahora creé un enlace físico en /tmp
ln /home/leo/demo demoLink
Ahora, al verificar el inodo usando
ls -ltri demoLink
Muestra el mismo número de inodo que el archivo original. Puedo digerir eso. ¡Pero el tipo de archivo del Hard Link es Regular! ¿Cómo es un archivo normal? ¿En qué se diferencia del archivo original? Leí que un archivo es una masa de datos anónima. Entonces, ¿estos dos archivos apuntan a los mismos datos? ¿El tamaño del archivo tanto del enlace físico como del archivo original es el mismo?
Respuesta1
El enlace físico no es en realidad un "enlace". El primer, segundo, tercer y enésimo enlace físico al mismo inodo de archivo son todos iguales entre sí. No hay diferencia entre una "entrada original" y un "enlace físico".
Digamos que si uno crea el archivo1 y luego agrega el enlace físico archivo2 al mismo inodo del archivo, no existe ningún método para descubrir qué enlace al inodo dado es original.
Es decir
cryo@CryoNest:~ $ touch file1
cryo@CryoNest:~ $ ls -il file*
9505656 -rw-r--r-- 1 cryo cryo 0 кві 8 20:24 file1
cryo@CryoNest:~ $ ln file1 file2
cryo@CryoNest:~ $ ls -il file*
9505656 -rw-r--r-- 2 cryo cryo 0 кві 8 20:24 file1
9505656 -rw-r--r-- 2 cryo cryo 0 кві 8 20:24 file2
cryo@CryoNest:~ $ rm file1
cryo@CryoNest:~ $ ls -il file*
9505656 -rw-r--r-- 1 cryo cryo 0 кві 8 20:24 file2
cryo@CryoNest:~ $ ln file2 file1
cryo@CryoNest:~ $ ls -il file*
9505656 -rw-r--r-- 2 cryo cryo 0 кві 8 20:24 file1
9505656 -rw-r--r-- 2 cryo cryo 0 кві 8 20:24 file2
Como puede ver, el número de inodo (9505656) y todos los atributos almacenados en el inodo son iguales para todos los enlaces físicos. Incluyendo tamaño, fecha, modo, etc.
Preste atención al tercer campo, se trata de una serie de enlaces al inodo. Este campo se puede utilizar para comprender situaciones "místicas" cuando uno "borra" un archivo (en realidad, una de las entradas del directorio de enlaces físicos) pero el uso del espacio no cambia :)
Si uno quiere encontrar todos los enlaces físicos del archivo dado, la herramienta "buscar" tiene la opción "-inum"
cryo@CryoNest:~ $ ln file1 tmp/file3
cryo@CryoNest:~ $ find . -maxdepth 2 -inum 9505656 -ls
9505656 0 -rw-r--r-- 2 cryo cryo 0 кві 8 20:24 ./tmp/file3
9505656 0 -rw-r--r-- 2 cryo cryo 0 кві 8 20:24 ./file1