¿Hay un límite de número de enlaces duros para un archivo? ¿Se especifica en alguna parte? ¿Cuáles son los límites seguros para Linux? ¿Y para otros sistemas POSIX?
¿Hay un límite de número de enlaces duros para un archivo? ¿Se especifica en alguna parte? ¿Cuáles son los límites seguros para Linux? ¿Y para otros sistemas POSIX?
Respuestas:
Posix requiere que el sistema operativo entienda el concepto de enlaces duros, pero no que los enlaces duros se puedan usar en cualquier circunstancia en particular. Puede averiguar cuántos enlaces duros están permitidos en una ubicación en particular (esto puede variar según el tipo de sistema de archivos) llamando . El límite mínimo ( ) es 8, pero esto no tiene sentido, ya que puede informar muchos otros errores de todos modos (permiso denegado, disco lleno, ...).pathconf(filename, _PC_LINK_MAX)
_POSIX_LINK_MAX
link()
La stat
estructura almacena el recuento de enlaces en un campo de tipo nlink_t
, por lo que el tipo de este campo proporciona un límite superior en su sistema. Pero hay una buena posibilidad de que nunca pueda llegar tan lejos: es común tener 32 bits nlink_t
pero solo 16 bits en muchos sistemas de archivos (un grep rápido en la fuente de Linux muestra que ext [234], NTFS, UFS y XFS usa conteos de enlaces de 16 bits en las estructuras de datos del kernel).
Esto depende del sistema de archivos.
El límite ext2 / 3/4 es 65k enlaces
línea de origen ext4 643, struct ext4_inode
->__le16 i_links_count
Mirando el formato de disco de estructura de inodo ext3 en las fuentes del kernel de Linux (* include / linux / ext3_fs.h *) que enumera el recuento de enlaces como un número de 16 bits
struct ext3_inode {
... snip ...
__le16 i_links_count; /* Links count */
}
Supongo que eso significa que un sistema de archivos ext3 puede tener hasta 65535 enlaces.
No he verificado los valores para otros sistemas de archivos.