脚本分别tar多个日志文件

时间:2015-10-23 18:10:02

标签: linux bash tar

我在RedHat Linux 6计算机上运行Elasticsearch和Logstash。我有一堆日志文件,每天从6月到8月的每天轮换。我试图找出最好的方法来保存一些磁盘空间,而无需手动削减每个磁盘空间。我在编写脚本方面有点新手,所以我想知道是否有人可以帮助我?这些文件的名称为 elasticsearch-cluster.log .datestamp。理想情况下,它们都会在各自的tar文件中,因此如果需要,可以更容易地返回并查看特定日期的日志。

1 个答案:

答案 0 :(得分:0)

您可以使用循环:

for file in elasticsearch-cluster.log.*
do 
    tar zcvf "$file".tar.gz "$file"
done

或者如果你喜欢单行(这是递归的):

find . -name 'elasticsearch-cluster.log.*' -print0 | xargs -0 -I {} tar zcvf {}.tar.gz {}

或@chepner使用-exec选项提及:

find . -name 'elasticsearch-cluster.log.*' -exec tar zcvf {}.tar.gz {} \;

或者如果想要排除已压缩的文件:

find . -name 'elasticsearch-cluster.log.*' -not -name '*.tar.gz' -exec tar zcvf {}.tar.gz {} \;

如果您不介意所有文件都在一个tar.gz文件中,您可以这样做:

tar zcvf backups.tar.gz elasticsearch-cluster.log.*

所有这些命令都会保留原始文件。验证tar.gz文件后,可以手动删除它们。