通过基础命令快速备份nohup.out文件,适用于临时或一次性备份需求:
cp命令:将nohup.out复制到指定备份目录(如/backup),保留原始文件。cp /path/to/nohup.out /backup/nohup_backup_$(date +%Y%m%d).log
tar命令:将nohup.out打包并压缩为.tar.gz格式,节省存储空间。tar -czvf /backup/nohup_backup_$(date +%Y%m%d).tar.gz /path/to/nohup.out
rsync命令:同步nohup.out到远程或本地备份目录,支持增量备份(仅传输变化部分)。rsync -avz /path/to/nohup.out /backup/nohup_sync_$(date +%Y%m%d).log
通过cron设置周期性自动备份,避免手动操作遗漏:
crontab文件:crontab -e
nohup.out到/backup目录,并按日期命名):0 1 * * * cp /path/to/nohup.out /backup/nohup_$(date +\%Y\%m\%d).log && > /path/to/nohup.out
(&& > /path/to/nohup.out用于清空原日志,避免重复备份旧内容)logrotate是Debian系统自带的日志管理工具,可实现自动轮转、压缩、删除旧日志,适合长期管理nohup.out:
sudo apt-get install logrotate
/etc/logrotate.d/nohup),添加以下内容:/path/to/nohup.out {
daily # 每天轮转一次(可改为weekly/monthly)
rotate 7 # 保留最近7个备份文件
compress # 使用gzip压缩旧日志(生成.no hup.out.1.gz格式)
missingok # 若日志文件不存在,不报错
notifempty # 若日志为空,不进行轮转
create 640 root adm # 轮转后创建新日志,权限640,属主root,属组adm
}
sudo logrotate -f /etc/logrotate.d/nohup # 强制立即执行一次轮转
(logrotate会自动读取/etc/logrotate.conf的全局配置,无需额外设置)通过Shell脚本实现更复杂的备份逻辑(如按大小分割、远程传输),并结合cron定时执行:
/usr/local/bin/nohup_backup.sh:#!/bin/bash
LOG_DIR="/path/to"
BACKUP_DIR="/backup"
LOG_FILE="$LOG_DIR/nohup.out"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
# 检查日志文件是否存在
if [ -f "$LOG_FILE" ]; then
# 备份并压缩(带时间戳)
tar -czvf "$BACKUP_DIR/nohup_$TIMESTAMP.tar.gz" "$LOG_FILE"
# 清空原日志
> "$LOG_FILE"
# 删除7天前的备份(保留最近7天)
find "$BACKUP_DIR" -name "nohup_*.tar.gz" -mtime +7 -exec rm {} \;
fi
chmod +x /usr/local/bin/nohup_backup.sh
cron任务(例如每小时执行一次):0 * * * * /usr/local/bin/nohup_backup.sh
chmod 700 /backup),避免敏感信息泄露。rsync或scp),提升数据安全性。