상위 10개 디렉토리에 대한 결과를 빠르게 얻는 방법

상위 10개 디렉토리에 대한 결과를 빠르게 얻는 방법

크기가 9T인 디렉터리(마운트 지점)가 있고 각 디렉터리, 특히 더 많은 공간을 소비하는 디렉터리의 크기를 가져오고 싶습니다. 이를 위해 아래 명령을 사용하고 bash 스크립트의 결과를 txt 파일로 푸시합니다.

du -hsx * | sort -rh | head -10

예상보다 시간이 오래 걸리고 몇 시간이 지나도 결과를 여러 번 얻을 수 없었습니다.

저는 이것을 웹과 Mobgar VPN 연결을 통해 시도하고 있습니다. 여기서 개선할 수 있는 것이 있나요?

답변1

정확한 디스크 공간을 원할 경우 디렉터리가 크기 때문에 시간이 다소 걸립니다. 이 작업을 자주 수행해야 하는 경우 하루에 한 번 실행되고 이 파일을 생성하는 cron 작업을 설정하는 것이 좋습니다 du(또는 요구 사항 및 이러한 디렉터리가 업데이트되는 빈도에 따라 빈도를 선택).

이렇게 하면 이전 스냅샷에서 이 파일에 대한 정렬 작업을 빠르게 수행할 수 있습니다.

답변2

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

-l긴 버전의 경우
-d에만 디렉토리 표시
-p디렉토리 이름에 / 사용
-S크기별 정렬은
-h사람이 읽을 수 있음을 의미하며
-R재귀적임을 의미함

답변3

du --max-depth=1 * | sort -nr | head -n 10

이 명령은 가장 큰 것부터 가장 작은 것까지 정렬된 폴더 크기를 포함하는 목록을 생성하고 처음 10줄을 가져옵니다( duGNU coreutils가 사용된다고 가정).

답변4

업데이트된 버전입니다.

첫 번째 읽기 속도와 버퍼 및 캐시 크기는 SSD와 HDD에 따라 다릅니다.

그래서 나는 당신이 폴더에 접근할 수 있다고 가정하고 있습니다(참조"여러번 결과를 얻지 못했어요", 일부 폴더의 경우 액세스 권한이 필요할 수 있습니다. 그렇지 않으면 "du: '/direc/tori/ss' 디렉토리를 읽을 수 없습니다: 권한이 거부되었습니다."라는 메시지가 나타날 수 있습니다.

당신의 말에 따르면

du -hsx * | sort -rh | head -10

h: print sizes in human readable format
s: --summarize you want the total size of directory,(you didn't ask for sub-directory, did you?)
x: you want to "skip directories on different file systems"
sort the result r: reverse and h: human numeric (you need h here because you use it there with du to distigush K,M,G)
head -10 : get the first top 10 of the sorted list

du 말고 다른 방법은 없나요? 예, 그 중 하나는 ncdu(du의 저주 기반 버전)를 사용하고 있습니다.

설명하다:

시간 확인(현지)내 시스템 성능을 기준으로

GNU 배쉬, 버전 5.1.4

올바른 디렉토리를 가정하고 132G 데이터가 있는 HDD 7200rpm의 경우:

1- time du -hsx * | sort -rh | head -10
real    0m44.978s
user    0m2.432s
sys     0m13.183s

2- 시간 du -B 1 --max-length=1|sort-rh|head-10

real    0m43.823s
user    0m2.269s
sys     0m12.879s

real: 사용자 경과 시간, sys: CPU 처리 시간.

큰 파일(예: iso 파일)이 있는 경우 첫 번째 du에 표시되지만 두 번째 du에는 디렉터리만 표시됩니다.

헤더를 사용하지 않는 경우: 사용된 크기입니다.주문파일 및 폴더 38G, 22G, 20G, 11G, 9.6G, 6.9G, 5.9G, 3.2G, 3.2G, 2.7G, 781M, 590M, 301M, 132M, 12M, 6.9M, 6.7M, 3.6M, 3.5M ,276K,224K,25K,4.0K,4.0K,4.0K,512,0

내가 사용할 때내 거(블록을 K, M, G로 변환한 후) 123GiB, 38GiB, 22GiB, 20GiB, 11GiB, 9.6GiB, 6.9GiB, 3.2GiB, 3.2GiB, 781MiB, 590MiB, 301MiB, 132MiB, 12MiB, 6.9MiB, . 7MiB, 3.6MiB, 3.5MiB, 276KiB, 224KiB, 100KiB, 25KiB, 512B

파일이 표시되지 않습니다.

SSD가 HDD보다 훨씬 빠르다는 것을 증명할 필요는 없을 것 같습니다.

ncdu 1.15.1 정렬 없음

real    0m43.550s
user    0m2.742s
sys     0m13.604s

게다가 ncdu에는 원격 연결을 위한 SSH 옵션도 있으니 확인해 보세요.

다른 셸을 사용하는 경우 읽은 답변과 의견을 바탕으로 추가 정보로 질문을 업데이트하세요.

마침내두 명령 사이의 시간 차이가 그렇게 크지 않다고 생각하므로 밤새 결과를 텍스트 파일에 저장하고 나중에 정렬할 수 있습니다.

관련 정보