GNU/Linux >> Tutoriales Linux >  >> Linux

Enlaces duros y enlaces blandos en Linux explicados

¿Alguna vez ha estado familiarizado con algo, ha trabajado alrededor de él, pero no ha entendido completamente sus conceptos? Siento que eso me pasa más a mí que a la mayoría de la gente. Este es un sentimiento frustrante, pero también es uno que a menudo se remedia fácilmente. A veces, solo se necesita que alguien explique el concepto en "inglés sencillo", también conocido como términos sencillos. Ese es el objetivo de este artículo. Quiero hablar sobre vínculos duros y enlaces blandos (simbólicos) en los términos más básicos posibles. Puede darse cuenta de que este concepto, que a menudo es una lucha para los administradores de sistemas, es bastante simple. Si nada más, lo guiaré a través de la sintaxis para crear estos enlaces (que a muchas personas les resulta difícil recordar). Así que pongámonos manos a la obra.

Enlaces duros

El concepto de enlace duro es el más básico que discutiremos hoy. Cada archivo en el sistema de archivos de Linux comienza con un solo enlace duro. El enlace está entre el nombre del archivo y los datos reales almacenados en el sistema de archivos. Crear un enlace duro adicional a un archivo significa algunas cosas diferentes. Hablemos de esto.

Primero, crea un nuevo nombre de archivo que apunta exactamente a los mismos datos que el nombre de archivo anterior. Esto significa que los dos nombres de archivo, aunque diferentes, apuntan a datos idénticos. Por ejemplo, si creo el archivo /home/tcarrigan/demo/link_test y escribe hola mundo en el archivo, tengo un único enlace fijo entre el nombre del archivo link_test y el contenido del archivo hola mundo .

[tcarrigan@server demo]$ ls -l
total 4
-rw-rw-r--. 1 tcarrigan tcarrigan 12 Aug 29 14:27 link_test

Tome nota del recuento de enlaces aquí (1 ).

A continuación, creo un nuevo vínculo físico en /tmp exactamente al mismo archivo usando el siguiente comando:

[tcarrigan@server demo]$ ln link_test /tmp/link_new

La sintaxis es ln (original file path) (new file path) .

Ahora, cuando miro mi sistema de archivos, veo ambos enlaces duros.

[tcarrigan@server demo]$ ls -l link_test /tmp/link_new 
-rw-rw-r--. 2 tcarrigan tcarrigan 12 Aug 29 14:27 link_test
-rw-rw-r--. 2 tcarrigan tcarrigan 12 Aug 29 14:27 /tmp/link_new

La principal diferencia aquí es el nombre del archivo. También se ha cambiado el número de enlaces (2 ). Más notablemente, si yo cat el contenido del nuevo archivo, muestra los datos originales.

[tcarrigan@server demo]$ cat /tmp/link_new 
hello world

Cuando se realizan cambios en un nombre de archivo, el otro refleja esos cambios. Los permisos, el recuento de enlaces, la propiedad, las marcas de tiempo y el contenido del archivo son exactamente iguales. Si se elimina el archivo original, los datos aún existen en el vínculo físico secundario. Los datos solo se eliminan de su disco cuando se han eliminado todos los enlaces a los datos. Si encuentra dos archivos con propiedades idénticas pero no está seguro de si están vinculados, use el ls -i comando para ver el inode número. Los archivos que están vinculados entre sí comparten el mismo número de inodo.

[tcarrigan@server demo]$ ls -li link_test /tmp/link_new 
2730074 -rw-rw-r--. 2 tcarrigan tcarrigan 12 Aug 29 14:27 link_test
2730074 -rw-rw-r--. 2 tcarrigan tcarrigan 12 Aug 29 14:27 /tmp/link_new

El número de inodo compartido es 2730074 , lo que significa que estos archivos son datos idénticos.

Si desea obtener más información sobre los inodos, lea mi artículo completo aquí.

Límites estrictos

Si bien es útil, existen algunas limitaciones en cuanto a lo que pueden hacer los enlaces físicos. Para empezar, solo se pueden crear para archivos normales (no directorios o archivos especiales). Además, un enlace duro no puede abarcar varios sistemas de archivos. Solo funcionan cuando el nuevo enlace duro existe en el mismo sistema de archivos que el original.

Enlaces blandos

Comúnmente denominados enlaces simbólicos , los enlaces blandos vinculan archivos regulares y no regulares. También pueden abarcar múltiples sistemas de archivos. Por definición, un enlace suave no es un archivo estándar, sino un archivo especial que apunta a un archivo existente. Veamos cómo crear un enlace suave. Yo uso el ln -s comando y la siguiente sintaxis:

ln -s (file path you want to point to) (new file path)

En el siguiente ejemplo, creo un nuevo archivo en /home/tcarrigan/demo/soft_link_test con el contenido del archivo soft Hello world . Luego creo un enlace suave a ese archivo en /tmp/soft_link_new :

[tcarrigan@server demo]$ ln -s /home/tcarrigan/demo/soft_link_test /tmp/soft_link_new
[tcarrigan@server demo]$ ls -l soft_link_test /tmp/soft_link_new 
-rw-rw-r--. 1 tcarrigan tcarrigan 17 Aug 30 11:59 soft_link_test
lrwxrwxrwx. 1 tcarrigan tcarrigan 35 Aug 30 12:09 /tmp/soft_link_new -> /home/tcarrigan/demo/soft_link_test

Tenga en cuenta que /tmp/soft_link_new es solo un enlace simbólico que apunta al /home/tcarrigan/demo/soft_link_test original . Si yo cat el contenido de /tmp/soft_link_new , debería ver el Hola mundo suave texto.

[tcarrigan@server demo]$ cat /tmp/soft_link_new 
soft Hello world

Todo esto suena muy bien, pero existen algunos inconvenientes al usar un enlace suave. La mayor preocupación es la pérdida de datos y la confusión de datos. Si se elimina el archivo original, el enlace suave se rompe. Esta situación se conoce como un vínculo flexible colgante . Si tuviera que crear un nuevo archivo con el mismo nombre que el original, su enlace suave colgante ya no estará colgando. Apunta al nuevo archivo creado, ya sea que esta haya sido su intención o no, así que asegúrese de tener esto en cuenta.

¿Duro o blando?

No hay una respuesta clara aquí. El mejor vínculo es el tipo que se adapta a su situación particular. Si bien estos conceptos pueden ser difíciles de recordar, la sintaxis es bastante sencilla, ¡así que eso es una ventaja! Para mantener los dos fácilmente separados en tu mente, te dejo esto:

  • Un enlace fijo siempre apunta un nombre de archivo a los datos en un dispositivo de almacenamiento.
  • Un enlace suave siempre apunta un nombre de archivo a otro nombre de archivo, que luego apunta a información en un dispositivo de almacenamiento.

¡Con suerte, esto lo ayudará a mantenerlos separados a medida que avanza a través de los tipos de enlaces necesarios para lograr sus objetivos diarios!

[ Curso gratuito en línea:Descripción general técnica de Red Hat Enterprise Linux. ]


Linux
  1. Cómo crear enlaces blandos y duros en Linux

  2. Tuberías y redirección en Linux - ¡Explicado!

  3. RHEL 7 – RHCSA Notas:Cree enlaces duros y blandos.

  4. ¿Qué son los enlaces blandos y los enlaces duros en el sistema de archivos de Linux?

  5. Diferencia entre enlaces blandos y enlaces duros en Linux

Guía para agregar enlaces simbólicos de Linux

Explicación de Soft Link y Hard Link en Linux con ejemplos

¿Qué son los enlaces simbólicos en Linux? ¿Cómo crear enlaces simbólicos?

El comando ln en Linux:crear enlaces blandos y duros

Vínculos blandos en Linux:la referencia completa

Enlaces duros y enlaces blandos en Linux:todo lo que necesita saber