it-swarm-ko.tech

리눅스에서 파일 이름 길이 제한?

Linux에 파일 이름 또는 경로 길이 제한이 있습니까?

130
ro.

특히 최대 파일 이름 길이 열에서 파일 시스템 비교에 대한 Wikipedia 페이지 를 참조하십시오.

다음은 널리 사용되는 파일 시스템에서 일부 파일 이름 길이 제한입니다.

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

경로 길이 제한이 시스템 헤더에 here 이라고 읽었습니다. 파일 이름 길이 제한도 있습니다. 내 시스템에서는 파일입니다.

  /usr/src/linux-headers-2.6.38-10/include/linux/limits.h

c-lang은 다음을 정의합니다.

  #define NAME_MAX         255    /* # chars in a file name */
  #define PATH_MAX        4096    /* # chars in a path name including nul */

그리고 더 많은.

90
sfp

다른 답변을 참조하십시오.

Linux에 파일 이름 또는 경로 길이 제한이 있습니까?

예, 파일 이름 및 경로 이름 길이는 다음으로 제한됩니다.

이러한 속성을 동적으로 가져 오려면

  • Michael Aaron Safyan 에서 제안한대로 pathconffpathconf 함수를 사용하십시오.
  • dogbane 에 설명 된대로 길고 더 긴 파일 이름 (또는 경로 이름)을 만드십시오.
  • Linux에서도 사용할 수있는 tim 에서 제안한대로 getconf 명령을 사용하십시오.

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

그리고 시간을 절약하고 메모리에 고정시키기 위해 :

ext2, ext3, ext4, zfs : 경로명 제한 없음; 255 바이트 파일 이름 제한.

20
Ivan

그것들은 파일 시스템 이름 길이입니다. "리눅스"자체도 일부 있습니다. 예를 들어 bits/stdio_lim.h에서 :

# define FILENAME_MAX 4096
6
jj33

이식 가능한 방식으로 Linux의 최대 경로 길이를 결정하는 no way가 있습니다. 내 시스템에서 :

$ getconf PATH_MAX / 
4096
$ getconf _POSIX_PATH_MAX / 
4096

그러나 4096 자보다 훨씬 긴 경로를 쉽게 만들 수 있습니다. 대신 PATH_MAX를 하한값으로 참조하십시오. 이 경로를 길게 만들 수는 있지만 더 긴 경로를 만들 수도 있습니다.

3
Björn Lindqvist

지정된 항목에 대한 런타임 값을 얻으려면 항상 pathconf 또는 이와 같은 함수를 사용해야합니다 .- page :

그러나 나열된 제한의 대부분은 변하지 않으며 런타임에 다음과 같은 이유로 제한 값이이 헤더에 제공된 값과 다를 수 있습니다.

  • 제한은 경로 이름에 따라 다릅니다.

  • 컴파일 머신과 런타임 머신의 한계가 다릅니다.

이러한 이유로 응용 프로그램은 fpathconf (), pathconf () 및 sysconf () 함수를 사용하여 런타임시 제한의 실제 값을 확인할 수 있습니다.

1
andy

시스템 limits.h 헤더 파일에 지정되어 있습니다.

다음 파일 중 하나입니다.

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 */
...

다음은이 파일의 사본이있는 위치와 파일이 정의한 값입니다.

find /usr | grep limits.h | xargs -I {} grep -H 'NAME_MAX' {}

산출:

...
/usr/include/linux/limits.h:#define NAME_MAX         255        /* # chars in a file name */
...
0
Bohdan Voloshyn