如何配置 logrotate 来 SCP 多个日志文件

如何配置 logrotate 来 SCP 多个日志文件

我想从 logrotate 复制多个文件,因此我尝试这样做:

/var/log/mysql.log /var/log/mysql/mysql.log /var/log/mysql/mysql-slow.log /var/log/mysql/error.log {
    daily
    rotate 7
    missingok
    create 640 mysql adm
    compress
    sharedscripts
    prerotate
            scp /var/log/mysql.log [email protected]:/var/log/mysql/mysql-`date -d "$D" '+%d'`-`date -d "$D" '+%m'`.txt
            scp /var/log/mysql/error.log [email protected]:/var/log/mysql/error-`date -d "$D" '+%d'`-`date -d "$D" '+%m'`.txt
    endscript
    postrotate
            test -x /usr/bin/mysqladmin || exit 0
            # If this fails, check debian.conf!
            MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
            if [ -z "`$MYADMIN ping 2>/dev/null`" ]; then
              # Really no mysqld or rather a missing debian-sys-maint user?
              # If this occurs and is not a error please report a bug.
              #if ps cax | grep -q mysqld; then
              if killall -q -s0 -umysql mysqld; then
                exit 1
              fi
            else
              $MYADMIN flush-logs
            fi
    endscript
}

但复制的所有文件都是空的。使用 nginx logrotate 时我没有遇到这个问题。我想这是因为它们是多个要轮换的条目。

我如何获取当前文件(我认为这是一个多个文件的循环,也许我错了)?

答案1

好的,如果未定义选项 sharedscripts ,则 Linux 似乎会为每个文件循环。

如果定义了 sharedscripts,则变量 $1 包含实际当前旋转文件或当前旋转文件列表。

相关内容