대략적인 디렉토리 크기를 얻습니다 (모든 파일과 하위 디렉토리를 재귀 적으로 포함)


10

디렉토리의 정확한 크기 (재귀 적으로 모든 하위 디렉토리 포함)를 빠르게 얻는 방법이 있습니까? 하위 디렉토리의 크기를 원하지 않습니다.보고 된 총 크기에 재귀 적으로 포함되어야 함을 의미합니다.

대략적인 크기를 얻는 방법? 나는 df전체 파일 시스템에 대해 빠른 응답을 생성하는 줄을 따라 무언가를 생각하고 있지만 이번에는 특정 디렉토리 (및 하위 디렉토리)에 대해 생각합니다.

du디렉토리에 수천 개의 하위 디렉토리가 포함되어 있으면 솔루션을 사용 하는 데 시간이 오래 걸리는 것 같습니다.


du내가 아는 유일한 방법은 사용 입니다. 문제는 데이터가 계층 구조 전체에 분산되어 있기 때문에 개수를 구하려면 도구로 데이터를 계산해야한다는 것입니다.
slm

답변:


15

나는 이것이 매우 유용하다는 것을 알았다.

du -sm Directory

또는 내부 디렉토리의 고장을 얻기 위해

du -sm Directory/*

하위 디렉토리가 많은 경우 정렬

du -sm Directory/* | sort -n 

-m 옵션을 사용하는 이유는 메가 바이트 출력을 얻는 것입니다. 나는 시각적으로 비교하기가 더 쉽다는 것을 알았습니다 (999KB와 1MB를 999000MB와 1000000MB와 비교하여 단위가 혼합되어 있지 않은 경우).

모든 것을 백그라운드에 배치하고 출력을 리디렉션하면 메소드가 사용하는 방식에 시간이 걸릴 것입니다. 시간이 걸리는 많은 파일의 횡단입니다.

du -sm Directory/* | sort -nr > ~/cacheDu.log &

참고 아웃 역 종류의 큰 사람이 처음에 그래서. 이것을 n 분마다 cron run에 추가하십시오.

그런 다음 별칭 ducache를 사용하면 상당히 최신의 디렉토리 사용이 가능합니다.

export alias ducache='head -n 15 ~/cacheDu.log'

@X 티안은 글렌 잭맨의 대답에 내 의견을 참조
마르쿠스 유니 우스 브루투스

그것이 내가 m을 사용하는 이유입니다
X Tian

3
에 기억 shopt -s dotglob그렇지 않으면 du -sm Directory/*숨겨진 파일 / 디렉토리를 계산하지 않습니다.
Dmitry Grigoryev 8

@XTian 죄송하지만 일부 명령 pls가 도움 이되지 못했습니다 .
Maveň ツ

나는 여기
Maveň ツ

5
du -sh "$dir"

"인간"형식 출력의 전체 크기 요약을 제공합니다.


에 대한 대안을 찾고 있었기 du때문에을 시도 find했지만 정확히 동일합니다.

$ find . -printf "%s\n" | { 
    sum=0
    while read size; do ((sum+=size)); done
    echo $sum
}
122865202884
$ du -sb .
122865202884    .

고마워, 나는 그것을 알고 있지만 du정확한 결과를 생성하기 때문에 너무 오래 걸립니다. 나는 빠른 n '더러운 대략적인 답변을 제공하는 도구 / 명령을 원했습니다.
Marcus Junius Brutus

있다 df그러나 그것은 전체 파일 시스템에서 작동합니다.
glenn jackman

1

내 대답이 마음에 들지 않을 수도 있지만 원하는 것을 수행하는 가장 좋은 방법은 cron을 사용하여 정기적으로 백그라운드에서 "du -s"를 실행하고 결과를 파일에 저장하는 것입니다. 그런 다음 대략적인 값을 원할 때 파일의 값을 사용하십시오. du를 얼마나 자주 실행할지 결정하게됩니다. 가치를 얻는 더 빠른 방법을 보지 못했습니다. 커맨드 du는 그것이하는 일에 효율적입니다.

이 작업을 매우 빠르게 수행 할 수있는 유일한 방법은 디렉토리의 파일 시스템을 만드는 것입니다. 그러면 df가 원하는 답을 매우 빠르게 얻을 수 있습니다.

디렉토리를 제외한 파일 시스템의 모든 것을 아는 것이 더 빠르다면, 파일 시스템에 대해 df를 실행하고 디렉토리 이외의 모든 것에 대해서는 du를 실행할 수 있습니다.


0

그것은 당신의 요구에 정확히 맞지 않지만 (한 줄짜리 인쇄는 아니지만) 다른 솔루션보다 훨씬 쉽습니다.

du -a -h | sort -hr | head -2

이 명령은 디렉토리 및 하위 디렉토리의 크기와 현재 디렉토리에서 가장 큰 파일 또는 하위 디렉토리의 크기를 제공합니다.

추신 : head -2하위 디렉토리가 현재 디렉토리의 모든 위치를 차지하고 현재 디렉토리보다 먼저 듣는 경우입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.