[英]script to tar up multiple log files separately
我在运行 Elasticsearch 和 Logstash 的 RedHat Linux 6 机器上。 我有一堆从 6 月到 8 月每天轮换的日志文件。 我正在尝试找出将它们压缩以节省一些磁盘空间的最佳方法,而无需手动对每个文件进行压缩。 我是脚本编写新手,所以我想知道是否有人可以帮助我? 这些文件的名称为elasticsearch -cluster.log .datestamp。 理想情况下,它们都将位于各自的 tar 文件中,以便在需要时更容易返回查看当天的日志。
您可以使用循环:
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 文件后,您可以手动删除它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.