이전 "du" 동작을 복원하는 방법은 무엇입니까?

이전 "du" 동작을 복원하는 방법은 무엇입니까?

내 서버(Ubuntu 12.04)에서 무언가를 이동하려고 할 때 다음 명령을 사용하여 현재 디렉터리의 각 하위 디렉터리 크기와 현재 디렉터리의 총 수를 알고 싶습니다 du.

$ du -sm * .
34      A
23      B 
1       .

하위 디렉터리 크기의 합(처음 두 행의 값의 합)이 현재 디렉터리와 해당 하위 디렉터리(마지막 행)의 크기보다 크기 때문에 이 내용을 읽었습니다. Ubuntu 8.04를 실행하는 서버에서는 -sm30년 전 이 옵션을 처음 사용했을 때와 마찬가지로 여전히 작동합니다.

$ cd /var/spool
$ du -sm * .
1      cron
1      cups
0      mail
2      postfix
3      .

이러한 차이가 발생하는 이유는 Ubuntu 12.04 시스템에는 coreutils버전 8.13이 있고 Ubuntu 8.04에는 6.10이 있기 때문입니다 coreutils. 다음과 관련된 일부 최적화를 수행했습니다.이것, 명령줄에 지정하더라도 디렉터리를 두 번 계산/표시하지 않습니다. 최신 버전에서는 du -sm . .한 줄로만 답변을 제공하고 이전 버전에서는 두 개의 동일한 줄로 답변을 제공합니다.

12.04 시스템에서는 이 작업을 수행할 수 있지만 du -sm * ; du -sm .실제로 관심 있는 디렉터리에 대해 이 작업을 수행하는 것은 옵션이 아닙니다. 왜냐하면 수백만 개의 파일에 1테라바이트가 넘는 데이터를 보관하는 28개의 직접 하위 디렉터리가 있기 때문입니다. 이 디렉터리 트리를 한 번 살펴보는 데는 몇 시간이 걸리며 디렉터리 정보는 운영 체제에 비해 큰 것으로 나타나 캐시할 수 없으므로 두 번째 디렉터리 트리를 실행하는 데 즉시 동일한 시간이 걸립니다(예: 더 큰 디렉터리에서du 실행하는 경우에는 그렇지 않습니다). 두 번 수행하면 일반적인 효과를 얻을 수 없습니다. du -s두 번째로 하위 트리가 훨씬 빨라집니다.

결과를 프로그램에 넣고 첫 번째 열에 값을 추가 할 수 있다는 것을 알고 있지만 tee이전 동작을 복원할 수 있는 방법이 있다면 좋을 것입니다 du.

누락된 coreutils 명령줄 옵션이나 설치할 수 있는 du대안이 있습니까?du

(또한 느려진 것 같은 느낌이 들지만 du, 이는 아마도 저장하고 처리하는 데이터의 양이 수년에 걸쳐 증가했기 때문일 것입니다. 12.04 시스템은 Btrfs를 실행하고 있으며 이로 인해 이동하는 많은 것들이 느려졌습니다.)

답변1

du dir1 dir2

모든 디스크 사용량과 해당 내용을 반복적으로 보고합니다 dir1. dir2파일은 한 번만 계산됩니다. 그렇지 않으면 디스크 사용량에 대해 잘못된 답변을 제공합니다.

당신은 그것을 사용할 수 있습니다 :

du -c dir1 dir2

두 가지 모두의 총 디스크 사용량도 원하는 경우.

그래서:

du -sc -- *

현재 디렉터리에서 숨겨지지 않은 파일과 디렉터리의 디스크 사용량과 누적 크기에 대한 요약을 제공합니다.

GNU를 사용하면 du다음도 수행할 수 있습니다.

du -ad1

또는

du -a --max-depth=1

디스크 사용량만 한 수준( .따라서 하위 디렉터리) 아래로 보고됩니다. 여기서는 -a현재 디렉터리 내의 디렉터리가 아닌 것을 보고하는 것과 같습니다 du *.

du다음 옵션을 사용하면 GNU가 파일 수를 여러 번 계산하도록 할 수 있습니다 -l:

du -ls -- * .

그다지 효율적이지 않으며 실제로 원하는 것이 아닐 수도 있습니다.

답변2

이 옵션은 -c총계를 생성합니다. 즉,귀하의 사용 사례에서, 이는 이전 버전과 du -smc *거의 동일한 출력을 제공합니다 ..totaldu -sm * .du

$ du -smc *
34  A
23  B
57  total

사용 사례가 질문에 제공된 것과 다르더라도 이 -c옵션은 어쨌든 과거에 얻은 결과에 가까운 결과를 얻는 데 도움이 될 것이라고 생각합니다.

관련 정보