특정 시간 범위의 디스크 사용량 가져오기

특정 시간 범위의 디스크 사용량 가져오기

특정 기간(예: 지난 7일) 동안 생성된 파일/디렉터리가 디스크 사용량 증가에 크게 기여했는지 알고 싶습니다.

출력은 다음과 유사합니다.

du /root -ah --max-depth 2 --time

예를 들어 충분합니다.

$ show-disk-usage /root --since 2020-12-01 --till now --max-depth 2
1,1M    2020-12-01 03:41    /root/dir1/sub1
2,0M    2020-12-12 05:46    /root/dir1/sub2
3,2M    2020-12-09 17:01    /root/dir1/file
6,3M    2020-12-12 05:46    /root/dir1
1,1M    2020-12-01 03:41    /root/dir2/sub1
2,0M    2020-12-10 21:30    /root/dir2/sub2
3,2M    2020-12-09 17:01    /root/dir2/file
6,3M    2020-12-10 21:30    /root/dir2
12,6M   2020-12-12 05:46    /root

3개의 열로

disk-usage-sum-of-modified-files   last-modification-time   file-or-directory-path

du주어진 시간 범위 내의 파일만 표시하고 해당 디렉터리에 추가해야 하는 합계와는 다릅니다. 예를 들어, 파일 크기를 /root/dir1/file2수정해도 위에 제공된 예제의 출력이 변경되어서는 안 됩니다.2020-08-01 12:019,8M

보너스:--threshold이와 같은 옵션은 du --threshold 1M기여된 파일만 가져오는 데 유용합니다.상당히디스크 사용량을 늘리기 위해 그러나 이 옵션은 디렉터리의 합계를 변경해서는 안 됩니다. 더 작은 파일이 누적되어 많은 양의 디스크 공간을 소비할 수 있기 때문입니다.

보너스 2:수정 시간보다는 파일 생성 시간을 사용하는 것이 더 나을 것입니다. 큰 파일에 대한 작은 변경은 원하는 것이 아닐 수 있기 때문입니다. 옵션 --created-since, --created-till및 개선이 될 것입니다 --modified-since.--modified-till


참고: 솔루션이 명령줄 애플리케이션일 필요는 없습니다.

답변1

find결합 해서 du하시면 됩니다

find /home/vtrefny -type f -mmin -$((7 * 24 * 60)) -printf "%p\0" | du -h -t 1M --time --files0-from=-

find논쟁

  • -mmin-- 파일이 X분 전에 마지막으로 수정되었습니다( 생성/액세스 시간에 cmin사용 가능 ).amin
  • -$((7 * 24 * 60))-- 단 몇 분 만에 7일
  • -printf "%p\0"-- NUL 바이트 뒤에 파일 경로를 인쇄합니다( du필수).

du논쟁

  • --time-- 마지막 수정 시간을 인쇄합니다( --time=<ctime/atime>생성/액세스 시간에 사용할 수 있음).
  • --files0-from=--- 표준 입력에서 파일 목록을 읽습니다( find여기에 제공됨).

관련 정보