Řešení 1:
Podívejte se na stránku Wikipedie o porovnání systémů souborů, zejména ve sloupci Maximální délka souboru .
Zde jsou některé limity délky názvů souborů v populárních souborových systémech:
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
Řešení 2:
Četl jsem zde, že limit délky cesty je v záhlaví systému. Je zde také limit délky názvu souboru. V mém systému je to soubor:
/usr/src/linux-headers-2.6.38-10/include/linux/limits.h
a C-lang definuje:
#define NAME_MAX 255 /* # chars in a file name */
#define PATH_MAX 4096 /* # chars in a path name including nul */
a některé další.
Řešení 3:
Existují v Linuxu nějaké limity délky souboru nebo cesty?
Ano, délka názvu souboru a názvu cesty je omezena :
- omezení souborového systému, jak uvádí WerkkreW;
- konstanty definované v
linux/limits.h
jak uvádí sfp.
Chcete-li dynamicky získat tyto vlastnosti:
- Používejte funkce
pathconf
afpathconf
jak navrhuje Michael Aaron Safyan - Vytvořte název souboru (nebo cestu) delší a delší, jak vysvětluje dogbane
-
Použijte příkaz
getconf
jak navrhuje tim, který je k dispozici také na Linuxu:$ getconf NAME_MAX /mnt/sda2/ 255 $ getconf PATH_MAX /mnt/sda3/ 4096
Řešení 4:
A kvůli úspoře času (a ukotvení v paměti):
ext2, ext3, ext4, zfs:bez omezení názvu cesty; limit 255 bajtů souboru.
Řešení 5:
To jsou délky názvů souborového systému. "linux" sám také nějaké má. Například z bits/stdio_lim.h:
# define FILENAME_MAX 4096