"du -ks *"에 대한 대답이 완전히 틀릴 수도 있나요?

"du -ks *"에 대한 대답이 완전히 틀릴 수도 있나요?

Ubuntu 18.04에서 디스크 공간 보고의 불일치를 조사하고 있습니다. 하위 디렉터리의 공간을 확인하기 위해 a를 실행하여 차이를 좁혔 du -ks *지만, 동일한 명령을 다시 실행하면 디렉터리 중 하나가 이전에 주어진 숫자의 두 배 크기를 반환했습니다. 이것은 작지만 (15M 대신 30M) du의 답변에 대한 신뢰에 영향을 미칠 수 있습니다.

이 모든 일은 경고나 오류 없이 발생합니다. 데이터를 잘못 알고 아무 말도 하지 않은 것이 아닐까요?

건배, 휴버트

답변1

하드 링크의 효과를 볼 수 있을 것입니다.

유틸리티 du는 하나 이상의 디렉터리에 inode의 관련 이름이 여러 개 있는 경우에도 각 inode가 차지하는 크기를 한 번만 계산하고 표시합니다.

예:

$ tree
.
|-- dir-a
|   `-- file1
`-- dir-b
    `-- file1

2 directories, 2 files
$ ls -li dir-*/file1
25732 -rw-r--r--  2 myself  wheel  8757248 Dec  9 08:33 dir-a/file1
25732 -rw-r--r--  2 myself  wheel  8757248 Dec  9 08:33 dir-b/file1

파일 dir-a/file1이며 dir-b/file1동일한 파일에 대한 두 개의 이름입니다. ls -li출력(첫 번째 열)의 inode 번호를 기록해 두십시오 .

$ du -h dir-*
8.4M    dir-a
1.0K    dir-b
$ du -h dir-b
8.4M    dir-b

첫 번째 명령을 사용할 때는 디렉터리 크기가 dir-b1KB에 불과하지만 두 번째 명령을 실행하면 디렉터리 크기가 8.4MB로 표시됩니다. 이는 inode에 있는 파일이 첫 번째 명령에서 file1이미 보였기 때문에 dir-a동일한 inode가 다시 보일 때 크기 계산에 포함되지 않기 때문입니다.dir-b

관련 정보