En informática , un vínculo físico es una entrada de directorio (en un sistema de archivos basado en directorios ) que asocia un nombre con un archivo . Por lo tanto, cada archivo debe tener al menos un enlace físico. La creación de enlaces duros adicionales para un archivo hace que el contenido de ese archivo sea accesible a través de rutas adicionales (es decir, a través de diferentes nombres o en diferentes directorios). [1] Esto provoca un efecto de alias : un proceso puede abrir el archivo por cualquiera de sus rutas y cambiar su contenido. Por el contrario, un enlace suave o "acceso directo" a un archivo no es un enlace directo a los datos en sí, sino más bien una referencia a un enlace físico u otro enlace suave.
Cada directorio es en sí mismo un archivo especial en muchos sistemas, que contiene una lista de nombres de archivos en lugar de otros datos. Por lo tanto, son posibles múltiples enlaces físicos a directorios, lo que podría crear una estructura de directorio circular, en lugar de una estructura ramificada como un árbol . Por esa razón, algunos sistemas de archivos prohíben la creación de enlaces físicos adicionales a directorios.
Los sistemas operativos compatibles con POSIX , como Linux , Android , macOS y la familia Windows NT , [2] admiten múltiples enlaces físicos al mismo archivo, según el sistema de archivos. Por ejemplo, NTFS y ReFS admiten enlaces físicos, [3] mientras que FAT no.
Deje que dos enlaces físicos, denominados "LINK A.TXT" y "LINK B.TXT", apunten 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 nombres de archivo apuntan a los mismos datos. Entonces, desde el punto de vista del usuario, este es un 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.
Sin embargo, algunos editores, como GNU Emacs , rompen el concepto de enlace físico. Al abrir un archivo para editarlo, por ejemplo, "LINK B.TXT", emacs cambia el nombre de "LINK B.TXT" a "LINK B.TXT~", carga "LINK B.TXT~" en el editor y guarda el contenido modificado. a un "LINK B.TXT" recién creado. Ahora, "LINK A.TXT" y "LINK B.TXT" ya no comparten los mismos datos. (Este comportamiento se puede cambiar usando la variable emacs backup-by-copying
).
Se puede crear cualquier número de enlaces físicos a los datos físicos. Para acceder a los datos, un usuario sólo necesita especificar el nombre de cualquier enlace existente; el sistema operativo resolverá la ubicación de los datos reales. Incluso si el usuario elimina uno de los enlaces físicos, los datos seguirán siendo accesibles a través de cualquier otro enlace que quede. 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 alguna vez ocupó el archivo.
La mayoría de los sistemas de archivos que admiten enlaces físicos utilizan el recuento de referencias . El sistema almacena un valor entero con cada sección de datos lógicos que representa el número total de enlaces físicos que se han creado 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ógicos. (Es posible que el sistema operativo no lo haga de inmediato, por ejemplo, cuando hay identificadores de archivos pendientes abiertos, por razones de rendimiento o para habilitar el comando de recuperación ).
Este es un método simple para que el sistema de archivos rastree el uso de un área de almacenamiento determinada, ya que 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 colgando que apunten a ninguna parte. La sección de datos y el inodo asociado se conservan siempre que un único enlace físico (referencia de directorio) apunte a ella o cualquier proceso mantenga abierto el archivo asociado.
En sistemas operativos compatibles con POSIX , el recuento de referencias de un archivo o directorio lo devuelven las llamadas al sistema stat() o fstat() en el st_nlink
campo de struct stat
.
Para evitar bucles en el sistema de archivos y mantener coherente la interpretación del " ..
" archivo (directorio principal), los sistemas operativos generalmente no permiten enlaces físicos a directorios. UNIX System V los permitía, pero sólo el superusuario tenía permiso para realizar dichos enlaces. [4] Mac OS X v10.5 (Leopard) y versiones posteriores utilizan enlaces físicos en directorios únicamente para el mecanismo de copia de seguridad de Time Machine . [5]
Sólo se pueden crear enlaces duros a archivos en el mismo volumen, es decir, dentro del mismo sistema de archivos. (Diferentes volúmenes pueden tener diferentes sistemas de archivos. No hay garantía de que el sistema de archivos del volumen de destino sea compatible con la vinculación física).
El número máximo de enlaces físicos a un único archivo está limitado por el tamaño del contador de referencias. En sistemas tipo Unix, el contador 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, la cantidad de enlaces físicos está limitada más estrictamente por su formato en el disco. Por ejemplo, a partir de Linux 3.11, el sistema de archivos ext4 limita el número de enlaces físicos de un archivo a 65.000. [6] Los límites de Windows imponen un límite de 1024 enlaces físicos a un archivo en volúmenes NTFS . [7]
En Linux Weekly News , Neil Brown criticó los enlaces físicos por considerarlos de alto mantenimiento, ya que complican el diseño de programas que manejan árboles de directorios, incluidos archivadores y herramientas de uso de disco. Estas aplicaciones deben tener cuidado de eliminar los duplicados de archivos que están vinculados 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 físico. [8]
Windows NT 3.1 y versiones posteriores admiten enlaces físicos en el sistema de archivos NTFS . [9] Windows 2000 introduce una CreateHardLink()
función para crear enlaces físicos, pero sólo para archivos, no para directorios. [10] La DeleteFile()
función puede eliminarlos.
Para crear un vínculo físico en Windows, los usuarios finales pueden usar:
fsutil
utilidad (introducida en Windows 2000 ) [11]mklink
comando interno del símbolo del sistema de Windows (introducido en Windows Vista y Windows Server 2008 ) [12]New-Item
cmdlet de PowerShell [13]Para interrogar a un archivo por sus enlaces físicos, los usuarios finales pueden utilizar:
fsutil
utilidad [11]Get-Item
y Get-ChildItem
de 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 HardLink
cadena " " si el archivo asociado tiene varios enlaces físicos. [14]La Tienda 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 físicos adicionales a archivos existentes. Para crear enlaces físicos, los usuarios finales pueden utilizar:
Para interrogar a un archivo por sus enlaces físicos, los usuarios finales pueden utilizar:
stat
comandols -l
comandoGet-Item
y Get-ChildItem
de PowerShell (ver arriba) [14]El software de compatibilidad o emulación similar a Unix que se ejecuta en Microsoft Windows, como Cygwin y Subsystem for UNIX-based Applications , permite el uso de interfaces POSIX.
OpenVMS admite enlaces físicos en el sistema de archivos ODS-5 . [15] A diferencia de Unix, VMS puede crear enlaces físicos a directorios.
freedup
comando libera espacio en disco reemplazando almacenes de datos duplicados con enlaces duros generados automáticamente.Establece un vínculo físico entre un archivo existente y un archivo nuevo. Esta función sólo es compatible con el sistema de archivos NTFS y sólo para archivos, no para directorios.
{{cite web}}
: Mantenimiento CS1: URL no apta ( enlace )Si su ubicación está en una unidad FileSystem, se permiten los siguientes valores: Si su ubicación está en una unidad FileSystem, se permiten los siguientes valores: Archivo[,] Directorio[,] Unión[,] HardLink