Comprendiendo las Diferencias entre Enlaces Físicos y Simbólicos
Ahora que hemos creado tanto enlaces físicos (hard links) como enlaces simbólicos (symbolic links), comparemos sus diferencias clave:
Enlaces Físicos (Hard Links):
- Comparten el mismo inodo (inode) que el archivo original.
- No se pueden enlazar a directorios.
- No pueden cruzar los límites del sistema de archivos.
- Siguen funcionando incluso si el archivo original se elimina o se mueve.
- Los cambios en el contenido se reflejan en todos los enlaces físicos.
Enlaces Simbólicos (Symbolic Links):
- Tienen su propio inodo, diferente del archivo objetivo.
- Pueden enlazar a directorios.
- Pueden cruzar los límites del sistema de archivos.
- Se rompen si el archivo objetivo se elimina o se mueve.
- Son esencialmente archivos punteros que contienen la ruta al archivo objetivo.
Demostremos algunas de estas diferencias con ejemplos:
Primero, intentemos crear un enlace físico a un directorio, lo cual no está permitido:
mkdir testdir
ln testdir testdir_hardlink
Debería ver un mensaje de error como el siguiente:
ln: testdir: hard link not allowed for directory
Ahora, intentemos crear un enlace simbólico a un directorio, lo cual está permitido:
ln -s testdir testdir_symlink
Verifiquemos nuestro enlace simbólico de directorio:
ls -la
Debería ver testdir_symlink -> testdir
en la salida, lo que indica que testdir_symlink
es un enlace simbólico a testdir
.
Podemos crear un archivo dentro del directorio original:
echo "This is a test file in the directory." > testdir/testfile.txt
Y acceder a él a través del enlace simbólico:
cat testdir_symlink/testfile.txt
Debería ver el contenido:
This is a test file in the directory.
Esto demuestra que los enlaces simbólicos pueden apuntar a directorios y se pueden utilizar para acceder a su contenido.
Otra diferencia importante es que eliminar el archivo original rompe un enlace simbólico pero no un enlace físico. Ya hemos visto esto con nuestro ejemplo de enlace simbólico. Demostremos esto con nuestro enlace físico:
rm original.txt
cat hardlink.txt
Debería seguir viendo las cuatro líneas:
This is the original file for our link examples.
This is an added line.
Another line added through the hard link.
This line was added through the symbolic link.
El enlace físico sigue funcionando porque los datos todavía existen en el disco y el enlace físico todavía apunta a esos datos.
Sin embargo, nuestro enlace simbólico ahora está roto:
ls -l symlink.txt
cat symlink.txt
Debería ver que symlink.txt
todavía existe pero apunta a un archivo que ya no existe, y tratar de leerlo produce un error.
Recreeemos el archivo original a partir de nuestro enlace físico:
cp hardlink.txt original.txt
cat symlink.txt
El enlace simbólico funciona de nuevo porque el archivo al que apunta existe una vez más.