특정 기간(예: 지난 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:01
9,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
여기에 제공됨).