如果文件比UNIX或Linux中的特定日期早,如何创建zip / gz / tar文件

时间:2013-09-27 16:30:01

标签: unix logging gzip gz

我需要一个脚本文件来备份(zip或tar或gz)我们的unix服务器中的旧日志文件(导致空间问题)。你能帮我为当前目录和子目录中的每个日志文件创建zip或gz文件吗?

我发现一个命令是为旧文件创建gz文件,但它只为所有旧文件创建一个gz文件。但是我需要为每个日志文件提供单独的gz文件。

查找/ tmp / log / -mtime +180 | xargs tar -czvPf / tmp / older_log _ $(日期+%F).tar.gz

提前感谢你。

3 个答案:

答案 0 :(得分:9)

最好的方法是

find . -mtime +3 -print -exec gzip {} \;

其中+3表示压缩所有超过3天的文件。

答案 1 :(得分:4)

首先,-mtime参数不会为您提供比某个数量“更旧”的文件。相反,它会检查上次修改文件的时间。大多数文件系统中都不保留文件的创建日期。通常,上次修改时间已足够,但与文件的年龄不同。

如果您只想为每个存档创建一个tar文件,请使用-exec而不是将数据传递给xargs:

find /tmp/log/ -mtime +180 -type f -exec sh -c \
    'tar -czvPf /tmp/older_log_$(basename $0)_$(date +%F).tar.gz $0' {} \;

答案 2 :(得分:4)

非常感谢您的回复。 我懂了。

files=($(find /tmp/mallik3/ -mtime +"$days"))
for files in ${files[*]}
do
     echo $files
     zip $files-$(date --date="- "$days"days" +%F)_.zip $files
      #       tar cvfz $(files)_$(date --date='-6months' +%F).tar.gz $files
#       rm $files
done