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