¿Cuáles son algunos usos típicos de los enlaces duros?

9

Todos los que estaban acostumbrados a Windows pueden imaginar qué son los enlaces simbólicos y cómo se usan. Por otro lado, el concepto de enlace rígido es extraño a Windows (¿estoy en lo correcto?).

Me gustaría saber cuáles son los usos típicos de los enlaces duros en Linux. Ya he visto diferentes publicaciones que describen la diferencia en cómo funcionan. Lo que pregunto es cuáles son algunas situaciones típicas en las que un usuario estaría mejor usando enlaces duros en lugar de enlaces simbólicos.

Que hacer
fuente
3
Esta pregunta se ha hecho en el intercambio de stack de Unix y Linux: ¿Por qué existen enlaces duros?
Flimm

Respuestas:

9

Utilizo un enlace duro donde necesito un solo archivo en dos o más lugares, predigo que algún día querré eliminar una de las ubicaciones y puedo olvidar que tengo un enlace al archivo. Esto me impide terminar con un enlace simbólico a un archivo que ya no existe.

Aclaración:

Un nombre de archivo es, de hecho, un enlace duro al archivo. Por lo tanto, cada archivo tiene al menos un enlace duro, que es lo que normalmente consideramos como "el" nombre del archivo. Cuando elimina un archivo, de hecho está eliminando su enlace duro (de ahí el nombre "eliminar", es decir rm, en lugar de "eliminar"). Cuando un archivo tiene su último enlace duro eliminado, el sistema también elimina el archivo.

Paddy Landau
fuente
7

Los enlaces duros permiten ...

  • un solo ejecutable para tener más de un nombre.

    Ejemplo:

    ls -l /bin | grep -v ' 1 ' | sortenumerará los que están /binpara usted. Resultado ...

    -rwxr-xr-x 2 root root     63 2010-01-19 21:49 gunzip
    -rwxr-xr-x 2 root root     63 2010-01-19 21:49 uncompress
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bunzip2
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bzcat
    -rwxr-xr-x 3 root root  26300 2011-12-12 22:40 bzip2
    

    En lugar de 3 archivos, bunzip2 bzcat y bzip2 usan el mismo archivo y dentro del archivo se hace una distinción sobre qué hacer. Guarda código y menos código significa menos errores posibles y un mantenimiento más fácil.

  • un solo archivo al que se accede por varias rutas.

    Tomemos, por ejemplo, un administrador de paquetes, que crea un directorio / usr / share / doc / $ packagename para cada paquete que está instalado y dentro de ese directorio un archivo llamado LICENCIA con la información de licencia del paquete. Muchos paquetes en un sistema Linux típico tienen licencia GPL, por lo que en lugar de tener 200 copias de la GPL en el sistema de archivos, solo podría haber una copia y 199 enlaces. ptman @ Serverfault

La razón por la cual los enlaces duros funcionan aquí (y los blandos no): eliminar solo 1 de los enlaces duros no elimina el archivo en sí.

Rinzwind
fuente
2
"Ejemplo: un movimiento ( mv) es una copia ( cp) + una eliminación ( rm)". Esto es cierto solo cuando el origen y el destino están en diferentes montajes. De lo contrario, a mvmueve solo el nombre, no el archivo.
Paddy Landau
1
Si quieres ir técnico: mv cambia el inodo, no el nombre. Pero tienes razón: parece que ese ejemplo es un poco viejo hoy en día y debería haber usado gzip como ejemplo;)
Rinzwind
3
Estamos un poco fuera de tema, pero acabo de probar esto. Mientras los restos de archivos en la misma montura, mvcambia el nombre solamente; El inodo sigue siendo el mismo.
Paddy Landau
Esto realmente no explica por qué no puede simplemente usar enlaces simbólicos, que puede guardar para unos pocos bytes de datos adicionales. Esto se aborda correctamente en esta respuesta .
Ken Sharp