![du가 빈 디렉토리를 잘못 보고함](https://linux55.com/image/144704/du%EA%B0%80%20%EB%B9%88%20%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%EB%A5%BC%20%EC%9E%98%EB%AA%BB%20%EB%B3%B4%EA%B3%A0%ED%95%A8.png)
나는 다음 명령을 사용하고 있습니다 :
du -sh --apparent-size ./*
du -sh ./*
둘 다 보고합니다:
4.0K ./Lightroom_catalog_from_win_backup
432M ./Lightroom catalog - wine_backup
그리고 이 디렉토리에는 다음이 포함됩니다.
$ll ./"Lightroom catalog - wine_backup"
total 432M
-rwxrwx--- 1 gigi gigi 432M Mar 18 2018 Lightroom 5 Catalog Linux.lrcat
-rwxrwx--- 1 gigi gigi 227 Nov 21 2015 zbackup.bat
$ll ./Lightroom_catalog_from_win_backup
total 396M
-rwxrwx--- 3 gigi gigi 396M Dec 17 09:35 Lightroom 5 Catalog Linux.lrcat
-rwxrwx--- 3 gigi gigi 227 Dec 17 09:35 zbackup.bat
du
./Lightroom_catalog_from_win_backup이 보고되는 이유 는 무엇 4.0K
이며 올바르게 보고하도록 하려면 어떻게 해야 합니까?
추신: 기타 시스템 정보:
$stat --file-system $HOME
File: "/home/gigi"
ID: 5b052c62a5a527bb Namelen: 255 Type: ext2/ext3
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 720651086 Free: 155672577 Available: 119098665
Inodes: Total: 183050240 Free: 178896289
$lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.5 LTS
Release: 16.04
Codename: xenial
답변1
파일이 하드 링크인 경우 다음을 재현할 수 있습니다.
~ mkdir foo bar
~ dd if=/dev/urandom of=bar/file1 count=1k bs=1k
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.00985276 s, 106 MB/s
~ ln bar/file1 foo/file1
~ du -sh --apparent-size foo bar
1.1M foo
4.0K bar
이는 예상된 동작입니다. ~에서GNU du
문서:
두 개 이상의 하드 링크가 동일한 파일을 가리키는 경우 하드 링크 중 하나만 계산됩니다. 파일 매개변수 순서는 계산되는 링크에 영향을 미치며, 매개변수 순서를 변경하면 du가 출력하는 숫자와 항목이 변경될 수 있습니다.
중복된 크기의 하드 링크가 정말로 필요한 경우 다음 -l
옵션을 시도해 보십시오.
'
-l
'
' 이미 (하드 링크로) 나타나는 경우에도 모든 파일의 크기를 계산합니다--count-links
.
~ du -sh --apparent-size foo bar -l
1.1M foo
1.1M bar
답변2
3
두 파일의 링크 Lightroom 5 Catalog Linux.lrcat
수도 기록해 두십시오 .zbackup.bat
Lightroom_catalog_from_win_backup
이는 이 두 파일이 어딘가에 있는 다른 파일(추가 이름 포함)에 하드 링크되어 있음을 의미합니다. du
디렉터리나 파일 집합에서 실행하는 경우 각 하드 링크는 한 번만 계산됩니다.
예:
$ ls -l
total 41024
-rw-r--r-- 2 kk wheel 10485760 Dec 17 09:07 file1
-rw-r--r-- 2 kk wheel 10485760 Dec 17 09:07 file2
$ du -h file1
10.0M file1
$ du -h file2
10.0M file2
$ du -h .
10.0M .
이 동작은 다음으로 인해 발생합니다.du
유틸리티용 POSIX 표준:
파일 피연산자 아래에서 여러 번 발생하고 링크 수가 1보다 큰 파일은 하나의 항목에 대해서만 계산되고 기록되어야 합니다.
일부 du
구현에는 이 동작을 비활성화하는 비표준 옵션이 있습니다. GNU의 경우 du
이는 -l
옵션을 통해 수행됩니다.
답변3
거의 확실하게 잘 작동하고 있습니다. du
각 파일은 참조 횟수에 관계없이 한 번만 계산됩니다. 두 디렉터리 모두 동일한 하드 링크 파일 세트를 포함하고 있을 가능성이 높습니다.
GNU 매뉴얼 페이지는 이 표준 최적화를 해제하는 방법을 du
제공합니다 ( 구현에 이 최적화가 포함되어 있는지 확인 참조). 또는 각 디렉터리에 대해 한 번씩, 두 번 실행합니다 .-l
--count-links
man du
du