Enlaces blandos y duros en Unix/Linux

Un enlace en UNIX es un puntero a un archivo. Al igual que los punteros en cualquier lenguaje de programación, los enlaces en UNIX son punteros que apuntan a un archivo o directorio. La creación de enlaces es una especie de acceso directo para acceder a un archivo. Los enlaces permiten que más de un nombre de archivo se refiera al mismo archivo, en otro lugar. 

Hay dos tipos de enlaces :

  1. Enlace suave o enlaces simbólicos
  2. Enlaces duros

Estos enlaces se comportan de manera diferente cuando la fuente del enlace (a lo que se vincula) se mueve o elimina. Los enlaces simbólicos no se actualizan (simplemente contienen una string que es el nombre de la ruta de su destino); los enlaces duros siempre se refieren a la fuente, incluso si se mueven o eliminan. 

Por ejemplo, si tenemos un archivo a.txt. Si creamos un vínculo físico al archivo y luego lo eliminamos, todavía podemos acceder al archivo usando el vínculo físico. Pero si creamos un enlace suave del archivo y luego lo eliminamos, no podemos acceder al archivo a través del enlace suave y el enlace suave se vuelve colgante. Básicamente, el enlace físico aumenta el recuento de referencias de una ubicación, mientras que los enlaces suaves funcionan como acceso directo (como en Windows) 

1. Enlaces duros 
 

  • A cada archivo vinculado de forma permanente se le asigna el mismo valor de INode que el original, por lo tanto, hacen referencia a la misma ubicación física del archivo. Los enlaces duros son más flexibles y permanecen vinculados incluso si los archivos originales o vinculados se mueven por todo el sistema de archivos, aunque los enlaces duros no pueden cruzar diferentes sistemas de archivos.
  • El comando ls -l muestra todos los enlaces con la columna de enlace muestra el número de enlaces.
  • Los enlaces tienen contenido de archivo real
  • Al eliminar cualquier enlace, solo se reduce el número de enlaces, pero no afecta a otros enlaces.
  • Incluso si cambiamos el nombre del archivo original, los enlaces duros también funcionan correctamente.
  • No podemos crear un enlace duro para un directorio para evitar bucles recursivos.
  • Si se elimina el archivo original, el enlace seguirá mostrando el contenido del archivo.
  • El tamaño de cualquiera de los archivos de enlace duro es el mismo que el del archivo original y si cambiamos el contenido de cualquiera de los enlaces duros, se actualiza el tamaño de todos los archivos de enlace duro.
  • La desventaja de los enlaces duros es que no se pueden crear para archivos en diferentes sistemas de archivos y no se pueden crear para archivos o directorios especiales.
  • El comando para crear un enlace duro es: 
     
$ ln  [original filename] [link name] 

2. Enlaces blandos 
 

  • Un vínculo suave es similar a la función de acceso directo a archivos que se utiliza en los sistemas operativos Windows. Cada archivo vinculado por software contiene un valor de INode separado que apunta al archivo original. De forma similar a los enlaces duros, cualquier cambio en los datos de cualquiera de los archivos se refleja en el otro. Los enlaces suaves se pueden vincular a través de diferentes sistemas de archivos, aunque si el archivo original se elimina o mueve, el archivo vinculado no funcionará correctamente (llamado enlace colgante).
  • El comando ls -l muestra todos los enlaces con el valor de la primera columna l? y el enlace apunta al archivo original.
  • Soft Link contiene la ruta del archivo original y no el contenido.
  • La eliminación del enlace suave no afecta nada, pero elimina el archivo original, el enlace se convierte en un enlace «colgante» que apunta a un archivo inexistente.
  • Un enlace suave puede vincular a un directorio.
  • El tamaño del enlace suave es igual a la longitud de la ruta del archivo original que proporcionamos. Por ejemplo, si vinculamos un archivo como ln -s /tmp/hello.txt /tmp/link.txt , el tamaño del archivo será de 14 bytes, que es igual a la longitud de “/tmp/hello.txt”.
  • Si cambiamos el nombre del archivo original, todos los enlaces blandos para ese archivo se vuelven colgantes, es decir, ahora no tienen valor.
  • Enlace a través de sistemas de archivos: si desea vincular archivos a través de sistemas de archivos, solo puede usar enlaces simbólicos/enlaces suaves.
  • El comando para crear un enlace suave es: 
     
$ ln  -s [original filename] [link name] 

Este artículo es una contribución de Sahil Rajput . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. 

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *