如何按年度分组对旧文件进行 tar-bzip

如何按年度分组对旧文件进行 tar-bzip

我想知道一个可以用来一次抓取和归档一年内所有文件的命令。我正在处理一个包含 72000 个文件的目录,其中文件的日期从 2007 年至今。我希望通过对一年组中的旧文件进行 tar-bzip 来使其更易于管理。因此,所有文件从 1-1-2007 到 12-31-2007 等。感谢您的帮助!

答案1

您可以使用find命令选择文件根据他们的修改时间

cd /path/to/directory
find -type f -newermt 2007-01-01 ! -newermt 2008-01-01

请注意,这会选择您所在时区 2007 年创建的文件,并且时间戳恰好在年份更改午夜时的文件与前一年分组。

find如果您的 CentOS 版本有不支持的旧版本-newermt,您可以改用-newerfencepost 文件。

touch -d 2007-01-01 /tmp/2007-01-01
touch -d 2008-01-01 /tmp/2008-01-01
find -type f -newer /tmp/2007-01-01 ! -newer /tmp/2008-01-01

假设文件名不包含换行符,您可以将结果列表作为输入tar使用-T选项(-T -表示从标准输入读取文件名)。

cd /path/to/directory
find -type f -newermt 2007-01-01 ! -newermt 2008-01-01 |
tar -cjf /elsewhere/2007.tar.bz2 -T -

tar -cJf /elsewhere/2007.tar.xz相反,xz 解压缩速度更快,压缩效果更好,但代价是压缩时需要更多内存。)

相关内容