Búsqueda de sitios web

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.

Artículos relacionados