怎么在Linux利用Logrotate的Olddir参数将归档日志统一移动至独立的挂载磁盘

落磊吖_6140

落磊吖_6140

2026-05-30

923人浏览

原创

logrotate的olddir参数必须与日志文件位于同一物理设备,因其依赖rename()系统调用,而该调用不支持跨文件系统;正确做法是先用olddir在同设备建临时目录,再通过postrotate脚本mv到目标磁盘。

怎么在linux利用logrotate的olddir参数将归档日志统一移动至独立的挂载磁盘

logrotate 的 olddir 参数本身不支持跨物理设备移动日志,它强制要求目标目录与原始日志文件必须位于同一文件系统(即同一挂载点)。这是内核级限制——因为 logrotate 使用 rename() 系统调用完成移动,而该调用无法跨设备。所以不能直接靠 olddir /mnt/backup(假设 /mnt/backup 是另一块磁盘)来实现。

为什么 olddir 必须在同一物理设备上

logrotate 手册明确说明:“The directory must be on the same physical device as the log file being rotated”。本质是原子重命名操作的限制:不同挂载点属于不同文件系统,rename() 无法跨越。若强行指定跨设备路径,logrotate 会报错或静默失败,旧日志仍留在原处。

正确做法:olddir + postrotate 移动组合

核心思路是分两步走:先用 olddir 在本地创建临时归档区(满足同设备要求),再通过 postrotate 脚本把内容搬走。这是生产环境通用解法。

  • 在原始日志所在分区下建一个临时目录,例如 /var/log/app/olddir
  • 配置 olddir /var/log/app/olddir
  • 在 postrotate 块中执行 mv 或 rsync 把 /var/log/app/olddir/* 同步到目标磁盘(如 /mnt/logs-backup/)
  • 建议加 || true 防止移动失败导致整个轮转中断

实际配置示例

以 Nginx 日志为例,假设目标磁盘挂载在 /mnt/logs-arch:

Zynq Linux Hardware Debug
Zynq Linux Hardware Debug

Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。

下载
/var/log/nginx/*.log {
    daily
    rotate 30
    missingok
    compress
    delaycompress
    copytruncate
    olddir /var/log/nginx/olddir
    sharedscripts
    postrotate
        mkdir -p /mnt/logs-arch/nginx
        mv /var/log/nginx/olddir/* /mnt/logs-arch/nginx/ 2>/dev/null || true
        find /mnt/logs-arch/nginx -name "*-$(date -d 'yesterday' +\%Y\%m\%d).gz" -delete
    endscript
}

注意:mkdir -p 确保目标路径存在;find ... -delete 可选,用于清理过期归档,避免备份盘也被撑满。

验证与调试建议

配置写完不要直接上线,先做两件事:

  • 运行 logrotate -d -f /etc/logrotate.d/nginx 查看 debug 输出,确认 olddir 被识别、postrotate 脚本被触发
  • 手动执行一遍 postrotate 里的命令,检查权限(logrotate 默认以 root 运行,但目标磁盘挂载用户/组需允许写入)和路径是否可达

如果目标磁盘是 NFS 或 CIFS 挂载,还需确认网络稳定性及挂载选项(如 soft vs hard)是否影响移动可靠性。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

920

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2892

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

976

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

869

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

434

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2636

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4912

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

787

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习