Respuestas:
Consulte la página de Wikipedia sobre la comparación de sistemas de archivos , especialmente en la columna Longitud máxima del nombre de archivo .
Estos son algunos límites de longitud de nombre de archivo en sistemas de archivos populares:
BTRFS 255 bytes
exFAT 255 UTF-16 characters
ext2 255 bytes
ext3 255 bytes
ext3cow 255 bytes
ext4 255 bytes
FAT32 8.3 (255 UCS-2 code units with VFAT LFNs)
NTFS 255 characters
XFS 255 bytes
He leído aquí que el límite de longitud de ruta está en los encabezados del sistema. El límite de longitud del nombre del archivo también está ahí. En mi sistema es archivo:
/usr/src/linux-headers-2.6.38-10/include/linux/limits.h
y C-lang define:
#define NAME_MAX 255 /* # chars in a file name */
#define PATH_MAX 4096 /* # chars in a path name including nul */
y algo más.
Me refiero a otras respuestas, favor de votarlas.
¿Hay algún nombre de archivo o límite de longitud de ruta en Linux?
Sí, las longitudes de nombre de archivo y ruta están limitadas por:
linux/limits.h
lo establecido por sfp .Para obtener dinámicamente estas propiedades:
pathconf
yfpathconf
según lo propuesto por Michael Aaron SafyanUse el comando getconf
propuesto por tim que también está disponible en Linux:
$ getconf NAME_MAX /mnt/sda2/
255
$ getconf PATH_MAX /mnt/sda3/
4096
Y en aras de ahorrar tiempo (y anclarlo en la memoria):
ext2, ext3, ext4, zfs: sin límites de nombre de ruta; Límite de nombre de archivo de 255 bytes.
PATH_MAX = 4096
embargo, la mayoría de los programas están limitados con rutas absolutas a . Eso puede solucionarse si su programa puede usar rutas relativas y primero cambia su directorio de trabajo.
Esas son las longitudes de nombre del sistema de archivos. "Linux" en sí también tiene algunos. Por ejemplo, de bits / stdio_lim.h:
# define FILENAME_MAX 4096
locate
.
No hay forma de determinar la longitud máxima de rutas en Linux de forma portátil. En mi sistema:
$ getconf PATH_MAX /
4096
$ getconf _POSIX_PATH_MAX /
4096
Pero puedo crear fácilmente caminos mucho más largos que 4096 caracteres. En cambio, ver PATH_MAX
como un límite inferior. Se garantiza que podrá crear rutas durante tanto tiempo, pero también podría crear rutas mucho más largas.
os.pathconf()
módulo Python tendrá algunas respuestas; si el puerto de Python es bueno, deberían ser razonables.
Siempre debe usar pathconf o alguna función como esta para obtener el valor de tiempo de ejecución sobre los elementos especificados, ya que esta página dice que:
Sin embargo, debe tenerse en cuenta que muchos de los límites enumerados no son invariables, y en el tiempo de ejecución, el valor del límite puede diferir de los que figuran en este encabezado, por las siguientes razones:
El límite depende de la ruta.
El límite difiere entre las máquinas de compilación y tiempo de ejecución.
Por estos motivos, una aplicación puede usar las funciones fpathconf (), pathconf () y sysconf () para determinar el valor real de un límite en tiempo de ejecución.
Se especifica en el archivo de encabezado limit.h del sistema .
Aquí está uno de estos archivos:
cat /usr/include/linux/limits.h
...
#define NAME_MAX 255 /* # chars in a file name */
#define PATH_MAX 4096 /* # chars in a path name including nul */
...
Aquí es donde se encuentran las copias de este archivo y los valores que definen:
find /usr | grep limits.h | xargs -I {} grep -H 'NAME_MAX' {}
Salida:
...
/usr/include/linux/limits.h:#define NAME_MAX 255 /* # chars in a file name */
...