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