确定最近 7 天的备份大小

确定最近 7 天的备份大小

考虑我有一个文件夹/home/abdul/backup,其中包含.gz过去 1 年的文件...我的要求是获取过去 7 天的大小...

答案1

find /home/abdul/backup -daystart -name '*.gz' -mtime -7 -exec du -h '{}' ';'

怎么运行的:

find- 它在锡上说了什么;因为您没有指定您正在使用哪个操作系统,所以我假设您可以访问 GNU find。

/home/abdul/backup- 起始目录

-daystart- 测量从一天开始以来的时间(可能是也可能不是您想要的)

-name '*.gz'- 只考虑名称以.gz(或更准确地说,匹配*.gz)结尾的文件

-mtime -7- 文件最近修改时间7*24 小时,考虑到 -daystart

-exec du -h '{}' ';'- 执行du以人类可读的单位打印指定文件的大小({}扩展到有问题的文件名)

这将列出所有已被删除的文件修改的在过去 7 天内。根据您运行的具体操作系统和文件系统,可能可以检查文件的创建时间,但许多 *nix 系统不会跟踪文件最初创建或“诞生”的时间。

答案2

find . -ctime -7 | xargs ls -l | awk '{ TOTAL += $5;} END{print TOTAL;}'

这将首先列出当前目录中小于 7*24 小时的文件,获取它们的大小(以字节为单位),总结并为您提供结果。

答案3

如果您的文件名不包含空格或其他奇怪的字符,您可以这样做:

du -sch "$(find /home/abdul/backup -name '*.gz' -mtime +7) "

对于空格和其他奇怪的字符,请使用以下命令:

find /home/abdul/backup -name '*.gz' -mtime -7 -print0 | xargs -0 du -sch

如果你有一个很多与您的条件匹配的文件 上面的两个命令都将失败。第一个是因为文件列表太长,第二个是因为xargs将分成多个命令并返回每个子集的总数。

避免这些问题的另一个解决方案是(感谢 Paulo Almeida,他的评论提到过):

find /home/abdul/backup -name '*.gz' -mtime -7 -print0 | du -sch --files0-from -

man du

  --files0-from=F
          summarize  disk  usage  of  the NUL-terminated
          file names specified in file F; If F is - then
          read names from standard input

相关内容