Yanıtlar:
Dosya sistemleri karşılaştırması hakkında Vikipedi sayfasına bakın , özellikle Maksimum dosya adı uzunluğu sütununda .
Popüler dosya sistemlerinde bazı dosya adı uzunluğu sınırları :
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
Burada yol uzunluğu sınırının sistem başlıklarında olduğunu okudum . Dosya adı uzunluğu sınırı da var. Benim sistemimde bu dosya:
/usr/src/linux-headers-2.6.38-10/include/linux/limits.h
ve C-lang şunları tanımlar:
#define NAME_MAX 255 /* # chars in a file name */
#define PATH_MAX 4096 /* # chars in a path name including nul */
ve biraz daha.
Diğer cevaplara bakın, lütfen onları oylayın.
Linux'ta herhangi bir dosya adı veya yol uzunluğu sınırı var mı?
Evet, dosya adı ve yol adı uzunlukları:
linux/limits.h
olarak belirttiği SFP .Bu özellikleri dinamik olarak almak için:
pathconf
ve fpathconf
Michael Aaron Safyan tarafından önerilen şekildeLinux'ta da bulunan timgetconf
tarafından önerilen komutu kullanın :
$ getconf NAME_MAX /mnt/sda2/
255
$ getconf PATH_MAX /mnt/sda3/
4096
Ve zamandan tasarruf etmek uğruna (ve onu hafızaya tutturmak için):
ext2, ext3, ext4, zfs: yol adı sınırı yok; 255 bayt dosya adı sınırı.
PATH_MAX = 4096
olsa da, mutlak yollarla sınırlıdır . Programınız göreceli yolları kullanabiliyorsa ve bu durumda çalışma dizini değiştirirseniz, bu sorun çözülebilir.
Bunlar dosya sistemi adı uzunlukları. "linux" un kendisi de vardır. Örneğin, bit / stdio_lim.h dosyasından:
# define FILENAME_MAX 4096
locate
.
Orada hiçbir şekilde taşınabilir bir şekilde Linux üzerinde yollarının maksimum uzunluğunu belirlemek için. Sistemimde:
$ getconf PATH_MAX /
4096
$ getconf _POSIX_PATH_MAX /
4096
Ancak 4096 karakterden daha uzun yolları kolayca oluşturabilirim. Bunun yerine PATH_MAX
bir alt sınır olarak bakın . Bu kadar uzun süre boyunca yol yaratabileceğiniz garantilidir, ancak daha uzun yol da oluşturabilirsiniz.
os.pathconf()
modülü bazı cevaplar verecektir; Python portu iyi ise, makul olmalıdır.
Her zaman kullanmalısınız pathconf bu gibi belirtilen öğeler hakkında çalışma zamanı değeri elde etmek veya bunun gibi bazı işlevi sayfa söyledi:
Bununla birlikte, listelenen sınırların çoğunun değişmez olduğu ve çalışma zamanında, sınırın değerinin, aşağıdaki nedenlerden dolayı, bu başlıkta verilenlerden farklı olabileceği belirtilmelidir:
Sınır yol adına bağlıdır.
Sınır derleme ve çalışma zamanı makineleri arasında değişir.
Bu nedenlerden dolayı, bir uygulama çalışma zamanında bir limitin gerçek değerini belirlemek için fpathconf (), pathconf () ve sysconf () işlevlerini kullanabilir.
Sistem settings.h başlık dosyasında belirtildi.
İşte bu dosyalardan biri:
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 */
...
İşte bu dosyanın kopyalarının bulunduğu ve tanımladıkları değerler:
find /usr | grep limits.h | xargs -I {} grep -H 'NAME_MAX' {}
Çıktı:
...
/usr/include/linux/limits.h:#define NAME_MAX 255 /* # chars in a file name */
...