¿Qué es un enlace blando y un enlace duro en Linux?

Un enlace simbólico o blando es un enlace real al archivo original, mientras que un enlace duro es una copia en espejo del archivo original. Si se elimina el archivo original, el enlace blando no tiene ningún valor, porque apunta a un archivo inexistente. Pero en el caso de los enlaces duros, es totalmente lo contrario. Aunque se elimine el archivo original, el enlace duro seguirá teniendo los datos del archivo original. Porque el enlace duro actúa como una copia en espejo del archivo original.

En pocas palabras, un enlace blando

  • puede cruzar el sistema de archivos,
  • permite enlazar entre directorios,
  • tiene un número de inodo y unos permisos de archivo diferentes a los del archivo original,
  • los permisos no se actualizarán,
  • sólo tiene la ruta del archivo original, no el contenido.

Un enlace duro

  • no puede cruzar los límites del sistema de archivos (es decir.Es decir, un hardlink sólo puede funcionar en el mismo sistema de archivos),
  • no puede enlazar directorios,
  • tiene el mismo número de inodo y permisos del archivo original,
  • los permisos se actualizarán si cambiamos los permisos del archivo de origen,
  • tiene el contenido real del archivo original, por lo que todavía se puede ver el contenido, incluso si el archivo original se mueve o se elimina.

¿Todavía no lo entiendes? Bueno, permítanme mostrarles algunos ejemplos prácticos.

Creación de enlace suave o enlace simbólico

Creemos un directorio vacío llamado «test».

$ mkdir test

Cambiemos 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 source.file.

$ cat source.fileWelcome to OSTechNix

Bien, el source.file ha sido creado.

Ahora, cree el un enlace simbólico o suave a la source.file.

Para ello, ejecute:

$ ln -s source.file softlink.file

Comparemos los datos de ambos source.file y softlink.file.

$ cat source.file Welcome to OSTechNix
$ cat softlink.file Welcome to OSTechNix

Como ves en la salida anterior, softlink.file muestra los mismos datos que source.file.

Comprobemos los inodos y permisos de softlink.file y source.file.

$ ls -lia

Muestra de salida:

total 1211665675 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.file11665692 -rw-rw-r-- 1 sk sk 21 Oct 17 11:39 source.file

Como vemos en la captura de pantalla anterior, el número de inodo (11665731 vs 11665692) y los permisos de archivo (lrwxrwx vs -rw-r–r–) son diferentes, aunque el softlink.tiene el mismo contenido que source.file, por lo que se demuestra que el softlink no comparte el mismo número de inodo y permisos del archivo original.

Ahora, elimine el archivo original (es decir, source.file) y ver lo que sucede.

$ rm source.file

Compruebe el contenido de la softlink.file utilizando el comando:

$ cat softlink.file

Salida de la muestra:

cat: softlink.file: No such file or directory

Como se ve arriba, no hay tal archivo o directorio llamado softlink.file después de que hemos eliminado el archivo original (es decir, source.file). Por lo tanto, ahora entendemos que el softlink es sólo un enlace que apunta al archivo original. El softlink es como un acceso directo a un archivo. Si elimina el archivo, el acceso directo es inútil.

Como ya sabe, si elimina el enlace suave, el archivo original seguirá estando disponible.

Lectura sugerida:

  • Cómo listar Symlinks en Linux
  • Cómo encontrar Symlinks rotos y eliminarlos en Linux

Crear Hard Link

Cree un archivo llamado source.con algunos contenidos como se muestra a continuación.

$ echo "Welcome to OSTechNix" >source.file

Verifiquemos el contenido del archivo.

$ cat source.fileWelcome to OSTechNix

Source.file ha sido creado ahora.

Ahora, vamos a crear el enlace duro a la source.file como se muestra a continuación.

$ ln source.file hardlink.file

Comprueba el contenido de hardlink.file.

$ cat hardlink.fileWelcome to OSTechNix

Ves que el hardlink.file muestra los mismos datos que source.file.

Comprobemos el inodo y los permisos de hardlink.file y source.file.

$ ls -lia

Muestra de salida:

total 1611665675 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.file11665692 -rw-rw-r-- 2 sk sk 21 Oct 17 11:57 source.file

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 hardlink comparte el mismo número de inodos y permisos del archivo original.

Nota: Si cambiamos los permisos en source.file, el mismo permiso se aplicará al hardlink.file también.

Ahora, elimine el archivo original (i.

$ rm source.file

Comprueba el contenido del archivo hardlink.file usando el comando:

$ cat hardlink.file

Muestra de salida:

Como ves arriba, aunque haya borrado el archivo fuente, puedo ver el contenido del archivo 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 Hard link y el archivo normal copiado?

Puede que se pregunte por qué crear un hard link cuando podemos copiar/pegar fácilmente el archivo original. Crear un enlace duro a un archivo es diferente a copiarlo.

Si copias un archivo, sólo duplicará el contenido. Así que si usted modifica el contenido de un archivo (ya sea original o enlace duro), no tiene ningún efecto sobre el otro. Sin embargo, si usted crea un enlace duro a un archivo y cambiar el contenido de cualquiera de los archivos, el cambio será visto en ambos.

Vamos a echar un vistazo a la fuente.archivo.

$ cat source.file Welcome to OSTechNix

El archivo de origen tiene una sola línea que dice – Bienvenido a OSTechNix.

Agrega una nueva línea, por ejemplo «Bienvenido a Linux» en source.file o hardlink.file.

$ echo "Welcome to Linux" >>source.file

Ahora comprueba el contenido de ambos archivos.

$ cat hardlink.file Welcome to OSTechNixWelcome to Linux
$ cat source.file Welcome to OSTechNixWelcome to Linux

¿Ves? Los cambios que acabamos de hacer en source.file se actualizan en ambos archivos. Es decir, ambos archivos (fuente y enlace duro) se sincronizan. Cualquier cambio que haga en cualquier archivo se reflejará en el otro. Si normalmente copias/pegas el archivo, no verás ningún cambio en el otro archivo.

Para más detalles, consulta las páginas man.

$ man ln

Eso es todo por ahora. Espero que tengas una idea básica sobre el enlace simbólico o suave y el enlace duro.

¡Gracias por pasarte!

Ayúdenos a ayudarle:

  • Suscríbase a nuestro boletín de noticias por correo electrónico : Suscríbase ahora
  • Apoye a OSTechNix : Done a través de PayPal
  • Descargue libros electrónicos y vídeos gratuitos : OSTechNix en TradePub
  • Conéctese con nosotros: Reddit | Facebook | Twitter | LinkedIn | RSS feeds

¡Tenga un buen día!!!

Deja una respuesta

Tu dirección de correo electrónico no será publicada.