심볼릭 링크는 실제로 디스크 사용량에 차이가 있습니까?


21

Linux에서 기호 링크 (소프트 링크, 심볼릭 링크)는 다른 파일을 참조하는 포인터 와 같 으며 (Windows 단축키와 같은) 다른 위치에있을 수있는 포인터 와 같은 많은 웹 사이트를 읽었습니다 . 그러나 심볼릭 링크가있는 폴더의 디스크 사용량을 확인하면 파일 관리자의 말과 du보고서 가 일치하지 않습니다 . 그러나, 나는 입력하면 du -L( -L, --dereference; dereference all symbolic links남자 페이지에서) 의 출력 du -L내 파일 관리자 보고서가 동일하고 크기 있음 .

내 질문은 : 예를 들어 별도의home파티션에 큰 파일에 대한 소프트 링크가 있으면 문제가 있습니까?

:

/var/tmp폴더가 이제 비어 있습니다. 파일을 만들어 봅시다 :

$ cat /some/file.txt > file.txt
$ du -ac
164 ./file.txt
168 .
168 total

그리고 내 파일 관리자 (이 경우에는 Thunar) 가보고합니다.

크기 : 1 개 품목, 총 163.0 kB

괜찮아. 이제 큰 파일을 /tmp만들고 그에 대한 심볼릭 링크를 만들어 봅시다 :

$ cat /dir/really_big.txt > /tmp/heavy.txt
$ du -a | grep heavy.txt
408 ./heavy.txt
$ ln -s /tmp/heavy.txt heavy.txt
$ du -ac
164 ./file.txt
0   ./heavy.txt
168 .
168 total

지금은 모든 것이 괜찮습니다. 그러나 파일 관리자를 열면 :

크기 : 2 개 항목, 총 570.3 kB

그리고 마지막으로:

$ du -acL
164 ./file.txt
408 ./heavy.txt
576 .
576 total

/var/tmp위치한 파티션 이 1GiB이고 1GiB 파일에 대한 링크를 만들면 하드 디스크가 죽습니까? 나는 그것이 du168과 Thunar 1 GiB를 출력 할 것이라는 것을 알고 있지만 어느 것이 옳은지는 모르겠습니다.


한 프로그램이 예를 들어 Mib, 다른 프로그램이 MB 단위로보고되지 않습니까?
HandyGandy

아니, 단위 문제가 아닙니다.
astrojuanlu

답변:


34

물론 심볼릭 링크는 공간을 차지하지만 이름과 대상을 저장하는 데 필요한 공간과 다른 메타 데이터의 경우 몇 바이트가 필요합니다. 심볼릭 링크가 차지하는 공간은 대상이 차지한 공간에 의존하지 않습니다 (결국 대상이 존재하지 않아도 됨).

일반 du은 디스크의 디렉토리 트리가 차지하는 공간을보고합니다. 모든 기호 링크가 대상으로 대체 된 경우 디렉토리 트리 차지하는 du -L공간을보고합니다 . 전자는 일반적으로 유용한 정보입니다. 예를 들어, 트리를 삭제 한 경우 복구 할 공간이며 트리를 백업하는 데 필요한 공간입니다.

du디렉토리 트리에서 (보통) 총 파일 크기보다 약간 더 많이 표시됩니다. 그것은 두 가지 때문입니다. 먼저, du디렉토리도 계산하는데, 파일 이름과 메타 데이터를 저장하는 데 약간의 공간이 필요합니다. 둘째, du파일 크기와 다를 수있는 파일이 차지하는 디스크 공간을 계산합니다. 가장 일반적인 효과는 파일이 정수 블록 수 (일반 Linux 설치의 경우 4kB)를 차지하므로 1 바이트 파일이 이중 출력에서 ​​4kB로 표시; 그러나 압축 (예 : 거의 모든 유닉스 파일 시스템에서 스파 스 파일이 제공하는 기본 형식 )은 파일 크기를 디스크 사용량보다 크게 만들 수 있습니다.

입력 한 숫자에서 Thunar 는 디렉토리 링크에있는 파일 크기의 합계를 기호 링크로 보고하는 것으로 보입니다 . 실제로는 미묘한 방식으로 말하고 있습니다. 디스크 사용량이 570.3 kB가 아니라 총 크기가 570.3 kB라고 주장합니다. 사용자 인터페이스 나 문서에서 전혀 분명하지 않은 것은 Thunar가 크기를 계산할 때 기호 링크를 따른다는 것입니다.

어느 쪽이 옳은가는 주관적인 문제입니다. du디스크 사용량을보고합니다. Thunar는 심볼릭 링크를 따라 전체 크기를보고합니다. 심볼릭 링크를 만들면 디스크 사용량에 미미한 영향을 미치지 만 Thunar가보고 한 전체 크기에 따른 심볼릭 링크는 기본적으로 변경됩니다.


내 질문을 편집하여 지금은 분명하다고 생각하지만 답변 해 주셔서 감사합니다.
astrojuanlu

@ Juanlu001 : 그에 따라 답변을 업데이트했습니다. 간단히 말해 du디스크 사용량을 보여주고 Thunar는 다른 것을 보여줍니다.
Gilles 'SO- 악마 그만

심볼릭 링크를 해결하는 백업을 만들 때 차이점이 중요합니다. 나무 아래에 여러 개의 심볼릭 링크가 있다는 것을 알고 있다면 나무 외부 위치로 해석되지만 그 나무 외부의 나머지 부분은 중요하지 않습니다.
Mel

3

필자는 기본적으로 파일 관리자가 소프트 링크가 가리키는 파일의 크기를 얻으려고 노력하는 반면 du디렉토리의 크기와 소프트 링크 자체는 지시하지만 파일이 가리키는 파일은 제공하지 않습니다.

명확히하기 위해

`du`    -> size of directory + size of all the softlinks  
`du -L` -> size of directory + size of all the files that the softlinks are pointing to.

이것이 당신이 요구 한 것인지 확실하지 않지만, 그렇다면 이것이 귀하의 질문에 대한 답이 될 수 있다고 생각합니다.


내 질문에 대답하지 못해서 죄송합니다. 이미 알고있는 말입니다. 방금 편집했습니다.
astrojuanlu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.