tar 分别创建多个日志文件的脚本
script to tar up multiple log files separately
我在 RedHat Linux 6 机器上,运行 Elasticsearch 和 Logstash。我有一堆日志文件,从 6 月到 8 月每天轮换。我正在尝试找出 tar 它们的最佳方法以节省一些磁盘空间,而无需手动 tar 更新每个。我是脚本方面的新手,所以我想知道是否有人可以帮助我?这些文件的名称为 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 文件后,您可以手动删除它们。
我在 RedHat Linux 6 机器上,运行 Elasticsearch 和 Logstash。我有一堆日志文件,从 6 月到 8 月每天轮换。我正在尝试找出 tar 它们的最佳方法以节省一些磁盘空间,而无需手动 tar 更新每个。我是脚本方面的新手,所以我想知道是否有人可以帮助我?这些文件的名称为 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 文件后,您可以手动删除它们。