我需要创建一个脚本,将我的/var/logs/*.log
文件中所有大小超过 1GB 的文件压缩到/var/logs/*.zip
.例如:access_log.log
如果access_log.zip
其大小超过 1024 MB。
答案1
这可能有效(从 运行/var/log
):
find *.log -type f -size +1G |xargs -L1 -I file zip file.zip file
解释
find *.log -type f -size +1G
查找所有大于 1GB 的文件xargs -L1 -I file zip file.zip file
压缩每个文件
xargs
如果您使用的是多核系统(您可能是),您可以通过给出参数并行运行(例如)4 个 zip 命令-P4
。
如果您有兴趣节省更多空间,可以尝试提供zip
该-9
选项。
另外,值得注意的是,在 Unix 世界中gzip
,bzip2
、 和xz
/比 Zip 更常见。lzip
答案2
查看该示例的 find -size 选项 1M :
find . -size +1M --exec gzip {} \;
但 如果它位于 /var/log 文件夹中,您可能更喜欢使用 logrotate 方法来管理文件历史记录和自动压缩