用于压缩/传输/删除日志文件的 Bash 脚本

用于压缩/传输/删除日志文件的 Bash 脚本

我目前正在使用 chronolog 为 Apache 设置带日期的日志文件名。它们的格式如下:

/WEB/LOGS/APACHE_ACCESS_YYYY-MM-DD.log /WEB/LOGS/APACHE_ERROR_YYYY-MM-DD.log

我想要一个脚本,它在每月的第一天运行并压缩上个月的日志文件,将它们传输到另一台主机(通过 SCP),然后删除压缩文件。

查找 .-name'*.log'-mtime +1-type f

我找到了几个类似上述示例的例子,它们允许您选择 x 天前的文件,但我需要上个月的所有文件。我首先承认我的 bash 脚本技能很弱,因此非常感谢任何帮助和指导。

答案1

在 shell 脚本中,您可以调用date命令来生成时间/日期字符串。

手册man 1 date应该显示支持哪些序列,因为 GNU 的日期实现与其他平台上的默认实现不太一样。以下内容应从每月 cron 作业中运行:

LOG_BASE=$(date --date="1 month ago" +/WEB/LOGS/APACHE_ACCESS_%Y-%m)
for file in $LOG_BASE-*.LOG ; do 
      zip -m $file.zip $file
done

相关内容