7

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

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

find /tmp/log/ -mtime +180 | xargs  tar -czvPf  /tmp/older_log_$(date +%F).tar.gz

提前谢谢你。

4

3 回答 3

13

最好的方法是

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

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

于 2016-05-19T06:26:33.170 回答
6

非常感谢您的回复。我知道了。

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
于 2013-10-03T16:11:21.650 回答
5

首先,该-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' {} \;
于 2013-09-28T15:36:02.173 回答