En informática , un enlace físico es una entrada de directorio (en un sistema de archivos basado en directorios ) que asocia un nombre a un archivo . Por lo tanto, cada archivo debe tener al menos un enlace físico. Crear enlaces físicos adicionales para un archivo permite acceder a su contenido a través de rutas adicionales (es decir, mediante nombres diferentes o en directorios diferentes). [ 1 ] Esto produce un efecto de alias : un proceso puede abrir el archivo mediante cualquiera de sus rutas y modificar su contenido. Por el contrario, un enlace simbólico o "acceso directo" a un archivo no es un enlace directo a los datos en sí, sino una referencia a un enlace físico o a otro enlace simbólico.
En muchos sistemas, cada directorio es en sí mismo un archivo especial que contiene una lista de nombres de archivo en lugar de otros datos. Por lo tanto, es posible crear múltiples enlaces duros a directorios, lo que podría generar una estructura de directorios circular, en lugar de una estructura ramificada como un árbol . Por esta razón, algunos sistemas de archivos prohíben la creación de enlaces duros adicionales a directorios.
Los sistemas operativos compatibles con POSIX , como Linux , Android , macOS y la familia Windows NT no compatible con POSIX , [ 2 ] admiten múltiples enlaces duros al mismo archivo, dependiendo del sistema de archivos. Por ejemplo, NTFS y ReFS admiten enlaces duros, [ 3 ] mientras que FAT no.
Operación

Supongamos que dos enlaces simbólicos, llamados "LINK A.TXT" y "LINK B.TXT", apuntan a los mismos datos físicos. Un editor de texto abre "LINK A.TXT", lo modifica y lo guarda. Cuando el editor (o cualquier otra aplicación) abre "LINK B.TXT", puede ver los cambios realizados en "LINK A.TXT", ya que ambos archivos apuntan a los mismos datos. Por lo tanto, desde el punto de vista del usuario, se trata de un solo archivo con varios nombres. Editar cualquier nombre de archivo modifica "todos" los archivos; sin embargo, eliminar cualquier nombre de archivo, excepto el último, mantiene el archivo original.
Sin embargo, algunos editores, como GNU Emacs , rompen el concepto de enlace duro. Al abrir un archivo para editarlo, por ejemplo, "LINK B.TXT", Emacs lo renombra a "LINK B.TXT~", lo carga en el editor y guarda el contenido modificado en un archivo "LINK B.TXT" recién creado. Ahora, "LINK A.TXT" y "LINK B.TXT" ya no comparten los mismos datos. (Este comportamiento se puede modificar mediante la variable de Emacs backup-by-copying).
Se pueden crear múltiples enlaces simbólicos a los datos físicos. Para acceder a ellos, el usuario solo necesita especificar el nombre de cualquier enlace existente; el sistema operativo determinará la ubicación de los datos. Incluso si el usuario elimina uno de los enlaces simbólicos, los datos seguirán siendo accesibles a través de cualquier otro enlace restante. Una vez que el usuario elimina todos los enlaces, si ningún proceso tiene el archivo abierto, el sistema operativo libera el espacio en disco que ocupaba dicho archivo.
Conteo de referencias

La mayoría de los sistemas de archivos que admiten enlaces duros utilizan el conteo de referencias . El sistema de archivos almacena un valor entero en cada sección de datos lógica que representa el número total de enlaces duros creados para apuntar a los datos. Cuando se crea un nuevo enlace, este valor aumenta en uno. Cuando se elimina un enlace, el valor disminuye en uno. Cuando el contador llega a cero, el sistema operativo libera la sección de datos lógica. (Es posible que el sistema operativo no lo haga inmediatamente, por ejemplo, cuando hay descriptores de archivo abiertos, por motivos de rendimiento o para habilitar el comando de recuperación ).
Este es un método sencillo para que el sistema de archivos controle el uso de un área de almacenamiento determinada, donde los valores cero indican espacio libre y los valores distintos de cero indican espacio utilizado. El mantenimiento de este valor garantiza que no habrá enlaces duros inactivos. La sección de datos y el inodo asociado se conservan mientras exista un único enlace duro (referencia de directorio) que apunte a ella o mientras algún proceso mantenga abierto el archivo asociado.
En los sistemas operativos compatibles con POSIX , el contador de referencias para un archivo o directorio se devuelve mediante las llamadas al sistema stat() o fstat() en el st_nlinkcampo de struct stat.
Limitaciones
Para evitar bucles en el sistema de archivos y mantener la interpretación del ..archivo " " (directorio padre) consistente, los sistemas operativos generalmente no permiten enlaces duros a directorios. UNIX System V los permitía, pero solo el superusuario tenía permiso para crearlos. [ 4 ] Mac OS X v10.5 (Leopard) y versiones posteriores usan enlaces duros en directorios solo para el mecanismo de copia de seguridad de Time Machine . [ 5 ]
Los enlaces duros solo se pueden crear a archivos en el mismo volumen, es decir, dentro del mismo sistema de archivos. (Esto se debe a que un enlace duro es una asociación "nombre → inodo", donde el inodo se identifica por su número , y los números de inodo solo son únicos dentro de su partición. Además, diferentes volúmenes pueden tener sistemas de archivos distintos. No hay garantía de que el sistema de archivos del volumen de destino sea compatible con la creación de enlaces duros).
El número máximo de enlaces duros a un solo archivo en un tipo particular de sistema de archivos está limitado por el tamaño del contador de referencias del sistema de archivos y el tamaño de la copia del contador de referencias en la estructura de datos por archivo en memoria del sistema operativo; también puede estar limitado por una política elegida en el código del sistema operativo. Exceder el número permitido de enlaces produce un error. En AT&T Unix System 6 , lanzado en 1975, el número de enlaces duros permitidos era 127. [ 6 ] [ 7 ] En sistemas tipo Unix el contador en memoria es 4.294.967.295 (en máquinas de 32 bits) o 18.446.744.073.709.551.615 (en máquinas de 64 bits). En algunos sistemas de archivos, el número de enlaces duros está limitado más estrictamente por su formato en disco. Por ejemplo, a partir de Linux 3.11, el sistema de archivos ext4 limita el número de enlaces duros en un archivo a 65 000. [ 8 ] Windows impone un límite de 1024 enlaces duros a un archivo en volúmenes NTFS . [ 9 ]
En Linux Weekly News , Neil Brown criticó los enlaces duros por su alto mantenimiento, ya que complican el diseño de programas que manejan árboles de directorios, incluidos los archivadores y las herramientas de uso de disco. Estas aplicaciones deben encargarse de eliminar los archivos duplicados que están enlazados varias veces en una jerarquía . Brown señala que el Plan 9 de Bell Labs , el sucesor previsto de Unix, no incluye el concepto de enlace duro. [ 10 ]
Soporte de plataforma
Windows NT 3.1 y versiones posteriores admiten enlaces duros en el sistema de archivos NTFS . [ 11 ] Windows 2000 introduce una CreateHardLink()función para crear enlaces duros, pero solo para archivos, no para directorios. [ 12 ] La DeleteFile()función puede eliminarlos.
Para crear un enlace físico en Windows, los usuarios finales pueden usar:
- La
fsutilutilidad (introducida en Windows 2000 ) [ 13 ] - El
mklinkcomando interno del Símbolo del sistema de Windows (introducido en Windows Vista y Windows Server 2008 ) [ 14 ] - El
New-Itemcmdlet de PowerShell [ 15 ]
Para consultar los enlaces físicos de un archivo, los usuarios finales pueden utilizar:
- La
fsutilutilidad [ 13 ] - Los cmdlets
Get-ItemyGet-ChildItemde PowerShell. Estos cmdlets representan cada archivo con un objeto; PowerShell agrega una propiedad LinkType de solo lectura a cada uno de ellos. Esta propiedad contiene la cadena "HardLink" si el archivo asociado tiene varios enlaces duros. [ 16 ]
El almacén de componentes de Windows utiliza enlaces físicos para realizar un seguimiento de las diferentes versiones de los componentes almacenados en el disco duro.
En sistemas tipo Unix , la link()llamada al sistema puede crear enlaces duros adicionales a archivos existentes. Para crear enlaces duros, los usuarios finales pueden usar:
Para consultar los enlaces físicos de un archivo, los usuarios finales pueden utilizar:
El software de emulación o compatibilidad tipo Unix que se ejecuta en Microsoft Windows, como Cygwin y el Subsistema para Aplicaciones Basadas en UNIX , permite el uso de interfaces POSIX.
OpenVMS admite enlaces duros en el sistema de archivos ODS-5 . [ 17 ] A diferencia de Unix, VMS puede crear enlaces duros a directorios.
Véase también
- Enlace simbólico : Apunta a un enlace físico, no a los datos del archivo en sí; por lo tanto, funciona en diferentes volúmenes y sistemas de archivos.
- Enlaces NTFS : Detalla los cuatro tipos de enlaces que admite NTFS: enlaces duros, enlaces simbólicos, puntos de unión y puntos de montaje de volumen.
- Acceso directo : Un archivo pequeño que apunta a otro en una ubicación local o remota.
- Alias : Implementación de macOS de un atajo
- Sombra : implementación de un acceso directo en OS/2
- freedup : Este
freedupcomando libera espacio en disco reemplazando los almacenes de datos duplicados con enlaces duros generados automáticamente. - rsync : admite
--link-dest=DIRque una nueva carpeta de copia de seguridad utilice enlaces duros de la copia de seguridad anterior si no se modifican [ 18 ] como una función de ahorro de espacio y tiempo ( copia de seguridad incremental ) [ 19 ] [ 20 ] [ 21 ]
Referencias
- ↑ Pitcher, Lew. "Preguntas y respuestas: La diferencia entre enlaces duros y blandos" .
- ↑ "Extensión de shell de enlace" .
- ↑ "Información general sobre el sistema de archivos resiliente (ReFS)" . Microsoft Learn . 26 de octubre de 2022 – vía Microsoft Docs .
- ↑ Bach, Maurice J. (1986). El diseño del sistema operativo UNIX . Prentice Hall. pág. 128. ISBN 9780132017992.
- ↑ Pond, James (31 de agosto de 2013). "Cómo funciona la magia de Time Machine" . Almacén de eventos del sistema de archivos, enlaces duros. Archivado del original el 21 de junio de 2019. Recuperado el 19 de mayo de 2019 .
- ↑ "2.2 Códigos de error" . gnu.org . Fundación del Software Libre . Consultado el 2 de abril de 2025 .
- ↑ Lions, John (1977). "19.5 link" . Sydney, Australia: University of New South Wales. línea 5917. Recuperado el 2 de abril de 2025 .
- ↑ "Árbol fuente del kernel de Linux, fs/ext4/ext4.h, línea 229" .
- ↑ "Función CreateHardLinkA (winbase.h)" . Desarrollo de aplicaciones para Windows . 13 de octubre de 2021 – vía Microsoft Docs .
- ↑ Brown, Neil (23 de noviembre de 2010). "Fantasmas del pasado de Unix, parte 4: Diseños de alto mantenimiento" . Linux Weekly News . Recuperado el 20 de abril de 2014 .
- ↑ "Cómo funcionan los enlaces duros" . Microsoft Docs . 6 de enero de 2011.
- ↑ Función «CreateHardLink» . Desarrollo de Windows . Microsoft . 10 de marzo de 2011. Archivado del original el 2 de julio de 2011 ( vía MSDN) .
Establece un vínculo físico entre un archivo existente y uno nuevo. Esta función solo es compatible con el sistema de archivos NTFS y únicamente con archivos, no con directorios.
- 1 2 "Enlace duro Fsutil" . Desarrollo de aplicaciones para Windows . Microsoft . 18 de abril de 2012 – vía Microsoft Docs.
- ↑ "Mklink" . Microsoft Docs . Microsoft . 18 de abril de 2012.
- 1 2 "New-Item (PowerShell 3.0)" . Microsoft Docs . Microsoft . 22 de junio de 2020.
Si su ubicación se encuentra en una unidad de sistema de archivos, se permiten los siguientes valores: Si su ubicación se encuentra en una unidad de sistema de archivos, se permiten los siguientes valores: Archivo[,] Directorio[,] Unión[,] Enlace duro
- 1 2 "FileSystemProvider.cs" . PowerShell / Repositorio de PowerShell . Microsoft . 20 de noviembre de 2021. Líneas 8139–8234 – vía GitHub .
- ↑ "Manual del administrador del sistema OpenVMS, vol. I" (PDF) . VSI. Agosto de 2019. Consultado el 23 de enero de 2021 .
- ↑ "rsync(1) - Página man de Linux" . linux.die.net . Archivado del original el 26/01/2026 . Recuperado el 31/01/2026 .
Esta opción se comporta como --copy-dest, pero los archivos sin cambios se enlazan físicamente desde DIR al directorio de destino. Los archivos deben ser idénticos en todos los atributos conservados (por ejemplo, permisos, posiblemente propiedad) para que los archivos se enlacen entre sí.
- ↑ "Rsync's link-dest: No es ideal para implementaciones - Konstantin Kovshenin" . Consultado el 31 de enero de 2026. El
argumento --link-dest permite crear enlaces duros a archivos desde un destino diferente si no han cambiado, ahorrando tiempo de transferencia y espacio en disco.
- ↑ "Copias de seguridad incrementales con rsync y enlaces duros | Blog de Digitalis" . digitalis.io . Consultado el 31/01/2026 .
Si el archivo en /backup/server1Old es el mismo que el archivo en el servidor remoto, en lugar de copiarlo, rsync creará un enlace duro desde el archivo en /backup/server1Old a /backup/server1New.
- ↑ Preston, W. Curtis (3 de enero de 2007). Copia de seguridad y recuperación: Soluciones de copia de seguridad económicas para sistemas abiertos . O'Reilly Media, Inc. pág. 189. ISBN 978-0-596-55504-7
Copiar los cambios en el nuevo directorio y crear enlaces duros, cuando sea posible, para los archivos que no hayan cambiado
.
- Sistemas de archivos informáticos