Jawaban:
Lihat halaman Wikipedia tentang perbandingan sistem file , terutama di kolom Panjang nama file maksimum .
Berikut adalah beberapa batasan panjang nama file dalam sistem file populer:
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
Saya telah membaca di sini bahwa batas panjang jalur ada di header sistem. Batas panjang nama file juga ada di sana. Di sistem saya ini adalah file:
/usr/src/linux-headers-2.6.38-10/include/linux/limits.h
dan C-lang mendefinisikan:
#define NAME_MAX 255 /* # chars in a file name */
#define PATH_MAX 4096 /* # chars in a path name including nul */
dan lainnya.
Saya merujuk pada jawaban lain, mohon utas mereka.
Apakah ada batasan nama file atau panjang jalur di Linux?
Ya, panjang nama file dan nama path dibatasi oleh:
linux/limits.h
seperti yang dinyatakan oleh sfp .Untuk mendapatkan properti ini secara dinamis:
pathconf
danfpathconf
seperti yang diusulkan oleh Michael Aaron SafyanGunakan perintah getconf
seperti yang diusulkan oleh tim yang juga tersedia di Linux:
$ getconf NAME_MAX /mnt/sda2/
255
$ getconf PATH_MAX /mnt/sda3/
4096
Dan demi menghemat waktu (dan menambatkannya ke memori):
ext2, ext3, ext4, zfs: tidak ada batasan pathname; Batas nama file 255 byte.
PATH_MAX = 4096
. Itu dapat dikerjakan jika program Anda dapat menggunakan jalur relatif dan Anda mengubah direktori kerja Anda terlebih dahulu.
Itu adalah panjang nama sistem file. "linux" sendiri juga memiliki beberapa. Misalnya, dari bits / stdio_lim.h:
# define FILENAME_MAX 4096
locate
.
Tidak ada cara untuk menentukan panjang maksimum lintasan di Linux dengan cara portabel. Di sistem saya:
$ getconf PATH_MAX /
4096
$ getconf _POSIX_PATH_MAX /
4096
Tapi saya dapat dengan mudah membuat jalur lebih dari 4096 karakter. Alih-alih melihat PATH_MAX
sebagai batas bawah. Anda dijamin bisa membuat jalur selama ini, tetapi Anda juga bisa membuat yang lebih panjang.
os.pathconf()
modul Python akan memiliki beberapa jawaban; jika port Python bagus, mereka harus masuk akal.
Anda harus selalu menggunakan pathconf atau beberapa fungsi seperti ini untuk mendapatkan nilai runtime tentang item yang ditentukan, karena halaman ini mengatakan bahwa:
Perlu dicatat, bahwa banyak batas yang tercantum tidak invarian, dan pada saat runtime, nilai batas mungkin berbeda dari yang diberikan dalam header ini, karena alasan berikut:
Batasnya adalah pathname-dependent.
Batasnya berbeda antara kompilasi dan mesin runtime.
Untuk alasan ini, aplikasi dapat menggunakan fungsi fpathconf (), pathconf (), dan sysconf () untuk menentukan nilai aktual dari batas saat runtime.
Ini ditentukan dalam file header limit.h sistem .
Ini salah satu dari file-file ini:
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 */
...
Di sinilah letak salinan file ini dan nilai yang ditentukan:
find /usr | grep limits.h | xargs -I {} grep -H 'NAME_MAX' {}
Keluaran:
...
/usr/include/linux/limits.h:#define NAME_MAX 255 /* # chars in a file name */
...