du 및 find -ls

du 및 find -ls

NFS를 통해 마운트된 원격 파일 시스템이 있는 Solaris 10 서버가 있습니다. 원격 시스템이 NetApp이라고 생각하지만 확실하지는 않습니다.

실행해 보니 df -h <mountpoint>크기는 12T, 사용은 10T, 용량은 87%가 나옵니다.

마운트 지점으로 변경하고 실행하면 ls -A |xargs du -s약 8MB의 공간이 확보됩니다. 나는 du가 재귀적으로 내려와 모든 파일 크기를 합산할 것으로 예상했지만 여기서는 그렇지 않은 것 같습니다.

울타리로서 나는 달렸다

find <mountpoint> -ls | awk '{total=total+$7}END{print total}'

답은 13006791645 입니다. 1024^3(1073741824)으로 나누면 약 12.1TB가 됩니다.

그래서 find -ls그것은 df다소 일관성이 있는 것 같습니다. 왜 그렇게 심하게 실패했나요?

추신: 이 명령은 ls -A숨겨진 스냅샷 디렉터리도 가져오지만 find는 아무것도 찾지 못합니다("루프 감지" 제외).

답변1

du -s512바이트 블록으로 보고됩니다. 사람이 읽을 수 있는 데이터는 보고되지 않으므로 df -h비교가 불가능합니다.du

두 값을 비교하려면 512바이트 단위로 보고 du -sh <mountpoint>하거나 사용 /usr/xpg4/bin/df -P하세요 .df

에 따르면 man du:

여러 링크가 있는 파일에는 하나의 항목만 계산되고 작성됩니다. 보고서에서 선택한 카탈로그 항목이 지정되지 않았습니다. 기본적으로 파일 크기는 512바이트 단위로 기록되며 다음 512바이트 단위로 반올림됩니다.

/usr/xpg4/bin/df -P512바이트 보고서를 받아 보십시오 df.

bash-3.2$ /usr/xpg4/bin/df -P /var
Filesystem            512-blocks        Used   Available Capacity  Mounted on
rpool/ROOT/s10/var
                      1147797504    66061270   954397119     7%    /var

그리고 du -s:

bash-3.2$ du -s /var
65976060        /var

또는 비교:

bash-3.2$ df -h /var              
Filesystem             size   used  avail capacity  Mounted on
rpool/ROOT/s10x_u11wos_24a/var
                       547G    32G   455G     7%    /var

그리고:

bash-3.2$ du -hs /var   
  31G   /var

관련 정보