Básicamente, existen dos limitaciones principales con los enlaces duros:
- Los enlaces duros normalmente requieren que el enlace y el archivo residan en el mismo sistema de archivos.
- Solo el superusuario puede crear un enlace rígido a un directorio.
Por lo tanto, se introdujeron enlaces simbólicos para sortear las limitaciones de los enlaces duros. Entonces, la pregunta es, ¿todavía se necesitan enlaces duros? ¿Podría haber una situación en la que sean más útiles?
Respuestas:
Los enlaces duros nos ayudan a organizar nuestro sistema de archivos de una manera mucho más flexible. Básicamente, los enlaces duros nos permiten tomar un archivo y tener varios lugares en el sistema de archivos a la vez. Piensa en un escenario en el que eres fotógrafo y tienes muchas fotos (¡este es un ejemplo de mi vida!). Puede organizarlos por las personas que aparecen en ellos, porque a veces la gente le pide fotos de ellos. Pero también es posible que desee organizarlos por ubicación y por fecha. No hay una forma real de anidar estas tres cosas, son ejes de organización totalmente separados. Por lo tanto, puede crear tres jerarquías diferentes para estas tres cosas diferentes, y tener cada foto presente en las tres, sintener que guardar cada foto tres veces. Esa es la magia de los enlaces duros. Desvincular enlaces simbólicos, no debemos preocuparnos por dónde está el "archivo real", porque son todos el archivo real. Podemos eliminar y mover a voluntad, porque el archivo se mantendrá hasta que ya no haya ninguna referencia a él, y se eliminará cuando elimine el último enlace duro. Es simple y no requiere que hagas un seguimiento de mucho.
fuente
gzip
,gunzip
yzcat
.El contenido de un archivo no se eliminará hasta que se hayan borrado todos los enlaces duros (sí, todos los nombres de archivos son enlaces duros, incluso el primero) y se haya cerrado el archivo. Como tal, puede ser útil cuando se requiere un archivo en varios lugares, pero se puede eliminar de cualquiera de ellos en cualquier momento, por ejemplo, entre
~/Downloads/coolsong.mp3
y~/Music/Cool Song.mp3
.fuente
Una ventaja no muy importante de un enlace rígido sobre un enlace simbólico es que cuando alcanza el inodo para un enlace rígido, el núcleo no tiene que procesar nada más para acceder al archivo. Cuando encuentra un enlace simbólico, el núcleo debe leer el valor del enlace y continuar atravesando la estructura del directorio antes de llegar al inodo del archivo. Esto lleva más tiempo, aunque la diferencia no necesariamente se mide fácilmente. Se vuelve realmente divertido cuando uno de los elementos en el valor del enlace simbólico es en sí mismo un enlace simbólico.
fuente
Hay varias razones para los enlaces duros
Entonces, una razón para usar enlaces duros es posiblemente ahorrar mucho espacio ...
Puede agregar a cualquiera de las referencias y los datos van al archivo compartido. También puede agregar un descriptor de archivo mientras lee del otro (por ejemplo, con tail -f)
fuente
Muchos de los ejemplos dados aquí son válidos, pero funcionarían igualmente bien con enlaces blandos (por ejemplo, el problema "necesita un archivo en varios lugares").
Un buen ejemplo de dónde los enlaces duros son realmente útiles es el software de respaldo Dirvish :
Dirvish crea copias de seguridad a nivel de sistema de archivos (es decir, copia archivos, no crea imágenes), copiando archivos en un sistema de archivos separado (copia de seguridad) (como un disco duro USB). Cada vez que realice una copia de seguridad, dirvish creará una copia completa y separada del árbol de directorios que se guardará.
El truco es que si dirvish detecta que ya hay una copia de seguridad más antigua del árbol que está guardando, reutilizará automáticamente los archivos que no han cambiado, creando un enlace rígido en el árbol nuevo al archivo en el árbol viejo.
De esa manera, cada copia de respaldo es una copia completa y autónoma del árbol de directorios, pero al mismo tiempo, solo los archivos modificados realmente ocupan espacio en el sistema de archivos. En otras palabras, obtiene los beneficios de copias de seguridad incrementales (ahorro de espacio) y copias de seguridad completas (recuperación fácil) al mismo tiempo.
Esto solo es posible porque los enlaces duros son completamente transparentes para las herramientas de espacio de usuario.
Esto probablemente también funcionaría con enlaces simbólicos (aunque tendría problemas al hacer una copia de seguridad de los datos que usan enlaces simbólicos en sí), pero una ventaja posible solo con enlaces duros es:
Si desea deshacerse de las copias de seguridad antiguas, simplemente puede eliminar el árbol del directorio de copias de seguridad correspondiente. El sistema de archivos elimina automáticamente los archivos vinculados desde ese árbol (porque se elimina su último enlace duro), pero los archivos que también aparecen en otras copias permanecen en el disco.
fuente
Un caso útil es, por ejemplo, cuando tiene un programa (o script) que necesita descargar un gran tarball temporal y después de extraerlo, su programa lo eliminará de inmediato.
Si por alguna razón desea conservar ese tarball para uso futuro, la mejor manera es hacerlo
ln /tmp/tarball.tgz ~
mientras el tarball aún se está descargando. Entonces no necesitas hacer nada.Cuando finaliza la descarga, e incluso después de que su programa eliminó el 'original', la copia exacta aún debe estar en su directorio de inicio.
fuente
Utilizo 'Enlaces duros' para hacer una copia de seguridad de algunos de mis 'HowTos' y fragmentos
Tengo un directorio llamado 'Documentos compartidos' en mi usuario / raíz. En ese directorio tengo 'enlaces duros' a mis consejos, trucos, fragmentos, instrucciones que viven en sus directorios apropiados; php, mysql, css, regex, formulas, linux, etc., tenerlos en 'un lugar' hace que sea mucho más fácil de usar, actualizarlos que tener que saltar en mis documentos / directorios buscando estos documentos que uso a menudo.
Hace mucho tiempo, usaba enlaces simbólicos. Realmente haría una copia de seguridad de este directorio común de 'Documentos compartidos' en mi servidor. El problema es, enlaces simbólicos o 'enlaces blandos', si se copian (cp -auv) o tar'ed y copiados, SOLO haga una copia de seguridad o copie el 'enlace' y NO el contenido del documento. Entonces, tendría que atravesar los directorios y copiar cada una de las 2 docenas de archivos de su ubicación real.
Con HARD LINKS, puedo copiar, tar, rsync el directorio 'Documentos compartidos' y, de hecho, hacer una copia de seguridad de esos documentos ampliamente dispersos con confianza, el contenido está respaldado. Realmente fue una mierda para mí, cuando me di cuenta de que había estado haciendo una copia de seguridad de 0 'archivos de enlace' y no la información.
La desventaja de usar 'Enlaces duros' es que hacer ls en un directorio no le da una indicación de que un archivo está 'vinculado' con otro archivo o dónde ese archivo puede coexistir. Hay formas de encontrarlos, pero digo que no es obvio con un simple ls -l -> apunta a ... Entonces, generalmente agrego una nota al comienzo del documento que indica en qué directorio / archivos está este archivo 'es' compartido 'con
Landis
fuente