温馨提示×

怎么备份debian nohup日志

小樊
40
2026-10-25 03:11:24
栏目: 智能运维

在 Debian 上,“nohup 日志”通常指用 nohup command > logfile 2>&1 & 方式产生的输出文件。下面从手动备份、自动备份、轮转管理三个角度说明。


一、手动备份 nohup 日志

假设你的日志文件是:

nohup.out
# 或
/var/log/myapp.log

直接复制即可:

cp nohup.out nohup.out.bak

或带日期:

cp nohup.out nohup.out.$(date +%F).bak

二、定期自动备份(推荐 cron)

1. 编写备份脚本

vim /root/backup_nohup.sh

内容示例:

#!/bin/bash
SRC=/path/to/nohup.out
DST=/backup/nohup.out.$(date +%F_%H-%M).log

cp "$SRC" "$DST"

赋予权限:

chmod +x /root/backup_nohup.sh

2. 添加 cron 任务

crontab -e

每天凌晨 2 点备份:

0 2 * * * /root/backup_nohup.sh

三、使用 logrotate(最规范方式)

如果是自己可控的日志文件,强烈建议用 logrotate。

示例配置

sudo vim /etc/logrotate.d/myapp

内容:

/path/to/nohup.out {
    daily
    rotate 7
    compress
    missingok
    notifempty
    copytruncate
}

说明:

  • copytruncate:不中断进程,复制后清空原文件(适合 nohup 日志)
  • compress:备份压缩
  • rotate 7:保留 7 份

手动测试:

logrotate -d /etc/logrotate.d/myapp  # 模拟
logrotate -f /etc/logrotate.d/myapp # 强制执行

四、如果日志正在被 nohup 写入

⚠️ 不要直接 rm nohup.out,否则:

  • 进程仍持有文件句柄
  • 磁盘空间不释放

正确方式:

  • 用 copytruncate
  • 或重启进程并重新重定向

五、备份到远程(可选)

rsync -avz nohup.out user@backup-server:/backup/

如果你愿意,可以告诉我:

  • 日志路径
  • 是否长期运行
  • 是否允许重启进程

我可以帮你定制一套备份方案。

0 踩