¿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!!!