获取特定时间范围内的磁盘使用情况

获取特定时间范围内的磁盘使用情况

我想知道在特定时间范围内(例如过去 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

您可以结合finddu执行此操作

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

find论点

  • -mmin-- 文件上次修改时间为 X 分钟前(cminamin用于创建/访问时间)
  • -$((7 * 24 * 60))-- 7 天只需几分钟
  • -printf "%p\0"-- 打印带有 NUL 字节尾随的文件路径(du需要它)

du论点

  • --time-- 打印上次修改时间(--time=<ctime/atime>可用于创建/访问时间)。
  • --files0-from=--- 从标准输入读取文件列表(由find此处提供)

相关内容