Explicando el enlace suave y el enlace duro en Linux con ejemplos
Enlace simbólico y enlace físico explicados con ejemplos
¿Qué es el enlace suave y el enlace duro en Linux?
Un enlace simbólico o un enlace suave es un enlace real al archivo original, mientras que un enlace físico es una copia reflejada del archivo original. Si elimina el archivo original, el enlace suave no tiene valor porque apunta a un archivo inexistente.
Pero en el caso del vínculo físico, es todo lo contrario. Incluso si elimina el archivo original, el enlace físico seguirá teniendo los datos del archivo original. Porque el enlace físico actúa como una copia reflejada del archivo original.
En pocas palabras, un enlace suave
- puede cruzar el sistema de archivos,
- le permite vincular entre directorios,
- tiene un número de inodo y permisos de archivo diferentes a los del archivo original,
- los permisos no se actualizarán,
- solo tiene la ruta del archivo original, no el contenido.
Un vínculo duro
- no puede cruzar los límites del sistema de archivos (es decir, un enlace físico solo puede funcionar en el mismo sistema de archivos),
- no puedo vincular directorios,
- tiene el mismo número de inodo y permisos que el archivo original,
- Los permisos se actualizarán si cambiamos los permisos del archivo fuente.
- tiene el contenido real del archivo original, por lo que aún puede ver el contenido, incluso si el archivo original se movió o eliminó.
¿Aún no lo entiendes? Bueno, permíteme mostrarte algunos ejemplos prácticos.
Cómo crear Soft Link o Enlace Simbólico
Creemos un directorio vacío llamado "test"
.
mkdir test
Cambie al directorio "test"
:
cd test
Ahora, cree un nuevo archivo llamado source.file
con algunos datos como se muestra a continuación.
echo "Welcome to OSTechNix" >source.file
Veamos los datos del archivo fuente.
$ cat source.file
Welcome to OSTechNix
Bueno, se ha creado el source.file
.
Ahora, cree un enlace simbólico o suave al source.file
.
Para hacerlo, ejecute:
ln -s source.file softlink.file
Comparemos los datos de source.file
y softlink.file
.
$ cat source.file
Welcome to OSTechNix
$ cat softlink.file
Welcome to OSTechNix
Ver datos de enlace simbólico
Como puede ver en el resultado anterior, softlink.file
muestra los mismos datos que source.file
.
Comprobemos los inodos y permisos de softlink.file
y source.file
.
ls -lia
Salida de muestra:
total 12
11665675 drwxrwxr-x 2 sk sk 4096 Oct 17 11:39 .
4325378 drwxr-xr-x 37 sk sk 4096 Oct 17 11:39 ..
11665731 lrwxrwxrwx 1 sk sk 11 Oct 17 11:39 softlink.file -> source.file
11665692 -rw-rw-r-- 1 sk sk 21 Oct 17 11:39 source.file
Verifique los inodos y permisos del enlace simbólico.
Como vemos en la captura de pantalla anterior, el número de inodo (11665731
vs 11665692
) y los permisos de archivo (lrwxrwxrwx
vs -rw-r--r--
) son diferente, aunque el softlink.file
tiene el mismo contenido que el source.file
. Por lo tanto, está demostrado que el enlace suave no comparte el mismo número de inodo y permisos del archivo original.
Ahora, elimine el archivo original (es decir, source.file
) y vea qué sucede.
rm source.file
Verifique el contenido del softlink.file
usando el comando:
cat softlink.file
Salida de muestra:
cat: softlink.file: No such file or directory
Comprobar el contenido del enlace simbólico
Como puede ver arriba, no existe ningún archivo o directorio llamado softlink.file
después de que eliminamos el archivo original (es decir, source.file
).
Entonces, ahora entendemos que el enlace suave es solo un enlace que apunta al archivo original. El enlace suave es como un acceso directo a un archivo. Si elimina el archivo, el acceso directo es inútil.
Como ya sabes, si eliminas el enlace suave, el archivo original seguirá estando disponible.
Lectura sugerida:
- Cómo enumerar enlaces simbólicos en Linux
- Cómo encontrar enlaces simbólicos rotos y eliminarlos en Linux
Cómo crear un vínculo físico
Cree un archivo llamado source.file
con algunos contenidos como se muestra a continuación.
echo "Welcome to OSTechNix" >source.file
Verifiquemos el contenido del archivo.
$ cat source.file
Welcome to OSTechNix
El source.file
se ha creado ahora.
Ahora, creemos el enlace físico al source.file
como se muestra a continuación.
ln source.file hardlink.file
Crear enlace físico
Compruebe el contenido de hardlink.file
:
$ cat hardlink.file
Welcome to OSTechNix
Verá que hardlink.file
muestra los mismos datos que source.file.
Comprobemos el inodo y los permisos de hardlink.file
y source.file
.
ls -lia
Salida de muestra:
total 16
11665675 drwxrwxr-x 2 sk sk 4096 Oct 17 11:58 .
4325378 drwxr-xr-x 37 sk sk 4096 Oct 17 11:39 ..
11665692 -rw-rw-r-- 2 sk sk 21 Oct 17 11:57 hardlink.file
11665692 -rw-rw-r-- 2 sk sk 21 Oct 17 11:57 source.file
Verifique los inodos y permisos del enlace físico.
Ahora, vemos que tanto hardlink.file
como source.file
tienen el mismo número de inodos (11665692
) y permisos de archivo (-rw-r--r--
). Por lo tanto, se demuestra que el archivo de enlace físico comparte el mismo número de inodos y permisos que el archivo original.
Aviso: Si cambiamos los permisos en source.file
, el mismo permiso se aplicará también al hardlink.file
.
Ahora, elimine el archivo original (es decir, source.file
) y vea qué sucede.
rm source.file
Verifique el contenido de hardlink.file
usando el comando:
cat hardlink.file
Salida de muestra:
Verifique el contenido del enlace físico
Como ve arriba, incluso si eliminé el archivo fuente, puedo ver el contenido del hardlink.file
. Por lo tanto, se demuestra que Hard link comparte el mismo número de inodo, los permisos y los datos del archivo original.
Entonces, ¿cuál es la diferencia entre un enlace físico y un archivo copiado normal?
Quizás se pregunte por qué crearíamos un enlace físico si podemos copiar y pegar fácilmente el archivo original. Crear un vínculo físico a un archivo es diferente a copiarlo.
Si copia un archivo, simplemente duplicará el contenido. Entonces, si modifica el contenido de un archivo (ya sea original o enlace físico), no tiene ningún efecto en el otro.
Sin embargo, si crea un vínculo físico a un archivo y cambia el contenido de cualquiera de los archivos, el cambio se verá en ambos.
Echemos un vistazo al archivo fuente.
$ cat source.file
Welcome to OSTechNix
El archivo fuente tiene una sola línea que dice: Bienvenido a OSTechNix.
Agregue una nueva línea, por ejemplo "Bienvenido a Linux" en source.file
o hardlink.file
.
echo "Welcome to Linux" >>source.file
Ahora verifique el contenido de ambos archivos.
$ cat hardlink.file
Welcome to OSTechNix
Welcome to Linux
$ cat source.file
Welcome to OSTechNix
Welcome to Linux
Actualizar el contenido del enlace físico
¿Ver? Los cambios que acabamos de realizar en source.file
se actualizan en ambos archivos. Es decir: ambos archivos (fuente y enlace físico) se sincronizan.
Cualquier cambio que haga en cualquier archivo se reflejará en otro. Si normalmente copia/pega el archivo, no verá ningún cambio nuevo en otro archivo.
Para obtener más detalles, consulte las páginas del manual.
man ln
Conclusión
En esta guía, analizamos qué es un enlace suave y un enlace físico en Linux, cómo crear enlaces suaves y enlaces duros con comandos de ejemplo y, finalmente, explicamos la diferencia entre un enlace duro y un archivo copiado normal.
Espero que tengas una idea básica de cómo usar enlaces simbólicos o suaves y enlaces físicos en Linux.