发布于2026-07-17 阅读(0)
扫一扫,手机访问
说到Nginx日志备份,这事儿看着简单,但真踩过坑的人都知道——日志文件越滚越大,磁盘空间说爆就爆,等到排查问题时发现日志已经被覆盖,那才叫一个欲哭无泪。其实,用cron配合一个简单的shell脚本就能搞定定期备份,自动、省心、还能保留历史记录。下面就把这套标准化流程拆开来讲,每一步都配了代码,直接复制改路径就能用。

先写一个备份脚本,比如命名为 backup_nginx_logs.sh。脚本的逻辑很直白:指定Nginx日志目录和备份目标目录,用当前日期给备份文件命名,然后打包压缩,顺便把30天前的旧备份清掉。具体内容如下:
#!/bin/bash
# 设置日志文件和备份目录
nginx_logs_path="/var/log/nginx"
backup_dir="/path/to/your/backup/directory"
# 获取当前日期
current_date=$(date +"%Y-%m-%d")
# 创建备份目录(如果不存在)
mkdir -p "$backup_dir"
# 备份Nginx日志文件
tar -czf "$backup_dir/nginx_logs_$current_date.tar.gz" -C "$nginx_logs_path" .
# 删除30天前的备份文件
find "$backup_dir" -type f -name "*.tar.gz" -mtime +30 -exec rm {} \;
注意:把nginx_logs_path和backup_dir换成你服务器上实际的路径。
脚本写好后,给它加上可执行权限,否则cron跑不起来:
chmod +x backup_nginx_logs.sh
接下来配置cron任务。编辑当前用户的crontab文件:
crontab -e
在编辑器里加一行,定义执行时间。比如希望每天凌晨1点自动备份,就写:
0 1 * * * /path/to/your/backup_nginx_logs.sh
记得把路径换成脚本的实际位置。
保存退出,cron就会按你设定的时间表自动运行脚本。如果想调整备份频率(比如每小时、每周),改cron表达式就行。保留天数也可以自己控制——上面脚本里-mtime +30表示删除30天前的文件,改成+7就是保留一周,按需修改。
这套方法的好处是零依赖、纯系统工具,几乎任何Linux发行版都能直接跑。唯一需要留意的就是备份目录的磁盘空间,别让备份文件本身把磁盘撑爆——记得定期检查或者设置监控告警。
下一篇:readdir如何按文件类型排序
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8