심볼릭 링크의 "크기"는 ls 출력에서 ​​무엇을 나타 냅니까?


11

예제로 시작하겠습니다.

$ ls -l dir1
total 4
-rw-r--r-- 4 maythux maythux 1650 2008-01-10 16:33 file
lrwxrwxrwx 1 maythux maythux  7 2008-01-15 15:17 symfile -> file

symfile 파일의 심볼릭 링크입니다 file

또한 내가 아는 것처럼 1650파일의 크기는 file크지 만 7크기 열 아래에있는 숫자는 무엇 입니까?

편집 : 실행 중 du:

$ du -sh symfile
0   symfile

그렇다면 7이 심볼릭 링크 크기라는 것을 어떻게 증명할 수 있습니까?!


최신 정보:

이 시도

$ touch file
$ du -sh file
0 file
$ ls -l file
-rw-rw-r-- 1 maythux maythux 0 Jun  1 19:42 file

크기도 0입니다.

지금:

$ ln -s file sym
$ du -sh sym
0 sym
$ ls -l sym
lrwxrwxrwx 1 maythux maythux 4 Jun  1 19:44 sym -> file

크기가 아니라고 생각합니다.


2
7파일 시스템 (및 기타 매개 변수)에 따라 달라집니다. ext4에서는 7이지만 btrfs에서는 13이고 tmpfs에서는 3입니다.
muru

1
크기는 크지 만 파일 시스템에 따라 다릅니다 (btrfs는 ext4보다 많은 메타 데이터를 저장하고 tmpfs보다 ext4를 더 많이 저장합니다). 디스크를 링크로 채울 수 있습니다. 다른 파일 시스템에서 다른 번호를 본다면 놀라지 마십시오.
muru


1
디렉토리 항목의 최소 크기가 필요 이상입니다. 충분한 항목을 입력하면 디렉토리 크기 가 증가합니다. 확인하십시오 : mkdir foo; ls -ld foo; for i in {1..1000}; do ln -s foo/bar foo/$i; done; ls -ld foo.
muru

답변:


13

심볼릭 링크는 이름과 대상을 저장하는 데 필요한 공간과 다른 메타 데이터를위한 몇 바이트를 차지합니다.

심볼릭 링크의 크기입니다.

의 크기에 대해서 du -sh: du 블록을 할당 얼마나 많은에서만 보이는, 그래서 0으로 표시 될 수 있습니다 statls -l더 나은 그런 측면에서 크기를 보여주는 있습니다.


그럼 왜 du -sh symfile0을 주나요? –
Maythux 2016 년

du는 할당 된 블록 수만보고 0을 표시 할 수 있습니다. stat 및 ls -l이 더 똑똑합니다.
Rinzwind 2016 년

업데이트를 읽으십시오
Maythux

내 답변보기 : 이름, 대상 및 일부 메타 데이터입니다. 전체적으로 7 바이트를 구성합니다. 다른 OS는 다른 메타 데이터를 저장하므로 크기가 다릅니다.
Rinzwind

문제는 "어떻게 증명할 수 있습니까?"였습니다.
Pilot6

5

바이트 단위의 심볼릭 링크 크기입니다.

일부 파일 시스템은 파일 시작에 사용되는 디렉토리 항목 내부에 작은 영역이 있으므로 file더 큰 디렉토리 항목을 희생시키면서 심볼릭 링크 및 작은 읽기 (생각 ) 처리 속도가 크게 향상됩니다 .

전체 심볼릭 링크 내용이 디렉토리 항목에 맞으면 데이터 블록이 할당되지 않고 du크기가 0으로 표시됩니다. 심볼릭 링크가 맞지 않으면 공간이 정상적으로 할당되므로 (단일 블록 할당으로 끝남) 테일 병합을 사용하여 파일 시스템에 의해 최적화 될 수 있습니다 (그러나 이에 du대해 알 API는 없습니다 ).

ext4파일 시스템은, 기준이 함수에서 발견 심볼릭이 최적화 수행 ext4_inode_is_fast_symlink를 .


" 일부 파일 시스템 ... "-이 기능이있는 공통 파일 시스템 (및없는 파일 시스템)을 나열하면 응답이 향상됩니다.
RM

1

이것은 바이트 단위의 심볼릭 링크 파일 크기입니다.

Symlink 파일은 가리키는 파일의 위치와 관련된 데이터를 저장하는 일반 파일입니다. ext 4에서는 7 바이트입니다.


무슨 크기? 바이트 또는 비트입니까?
Maythux

바이트 단위의 크기 ..
Pilot6

1
그럼 왜 du -sh symfile0을 주나요?
Maythux

du는 매우 작은 파일로 크기가 미리 설정되어 있지 않습니다. 약 99 바이트 파일에서 du를 사용하십시오. 4.0K가 ​​표시됩니다.
Pilot6

그것은 내 피오 인트이기도하다. OS 개념에서는이 파일에 대한 클러스터를 등록하기 때문에 적어도 symlink에 4k를 표시해야한다
Maythux
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.