pengembangan-web-mp-pd.com

Batas panjang nama file di linux?

Apakah ada batasan nama file atau panjang jalur di Linux?

130
ro.

Lihat halaman Wikipedia tentang perbandingan sistem file , terutama di kolom Panjang nama file maksimum .

Berikut adalah beberapa batas 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
134
WerkkreW

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.

90
sfp

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:

Untuk mendapatkan properti ini secara dinamis:

  • Gunakan fungsi pathconf dan fpathconf seperti yang diusulkan oleh Michael Aaron Safyan
  • Buat nama file (atau pathname) lebih lama dan lebih lama seperti yang dijelaskan oleh dogbane
  • Gunakan perintah getconf seperti yang diusulkan oleh tim yang juga tersedia di Linux:

    $ getconf NAME_MAX /mnt/sda2/
    255
    $ getconf PATH_MAX /mnt/sda3/
    4096
    
24
olibre

Dan demi menghemat waktu (dan menambatkannya ke memori):

ext2, ext3, ext4, zfs: tidak ada batasan pathname; Batas nama file 255 byte.

20
Ivan

Itu adalah panjang nama sistem file. "linux" sendiri juga memiliki beberapa. Misalnya, dari bits/stdio_lim.h:

# define FILENAME_MAX 4096
6
jj33

Ada tidak mungkin untuk menentukan panjang jalur maksimum 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.

3
Björn Lindqvist

Anda harus selalu menggunakan pathconf atau beberapa fungsi seperti ini untuk mendapatkan nilai runtime tentang item yang ditentukan, karena ini halaman 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.

  • Batas berbeda antara mesin kompilasi dan runtime.

Untuk alasan ini, aplikasi dapat menggunakan fungsi fpathconf (), pathconf (), dan sysconf () untuk menentukan nilai aktual batas saat runtime.

1
andy

Ini ditentukan dalam sistem batas.h file header.

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 */
...
0
Bohdan Voloshyn