我想logrotate
复制和截断日志文件,并在不同的物理磁盘上使用olddir。 根据手册,olddir不能在不同的物理磁盘,因为logrotate的默认行为是只重命名原始的日志文件,这是不同的物理磁盘不可能。
那么,但我使用copytruncate
指令,它使原始文件的副本,然后截断原始文件。 因此,将新复制的文件移动到不同物理磁盘上的不同位置应该没有问题。
但是当我运行logrotate的时候,它仍然抱怨logfile和olddir在不同的设备上运行。
有没有办法解决它? 可能运行一些自定义postrotate脚本,将日志文件移动到所需的位置?
这是从logrotate手册页。
olddir directory <br> Logs are moved into directory for rotation. **The directory must be on the same physical device as the log file being rotated**, and is assumed to be relative to the directory holding the log file unless an absolute path name is specified. When this option is used all old versions of the log end up in directory. This option may be overridden by the noolddir option.
在同一物理设备上存在olddir
是有限制的。
可以使用下面的解决方法。
将olddir
设置为相同物理磁盘中的目录,然后使用olddir
脚本将olddir
内容移动到不同物理设备上的目录中。
示例logrotate配置文件:
/var/log/httpd/*log { copytruncate olddir /var/log/httpd/olddir rotate 5 missingok notifempty sharedscripts delaycompress postrotate mv /var/log/httpd/olddir/* /vagrant/httpd/olddir/ /sbin/service httpd reload > /dev/null 2>/dev/null || true endscript }