方案描述:映射nginx容器中的日志文件到宿主机 --> shell脚本定时备份日志 --> 定时任务执行shell脚本
1、映射nginx容器中的日志文件
2、编辑定时备份日志的shell脚本
2.1 文件夹命名为`backup_nginx_log.sh`
2.2 注意容器名称为nginx,如果不一致需要修改
2.3 注意变量`NGINX_LOG_DIR`需要和第一步设置的宿主机地址一致
#!/bin/bash
# 设置变量
NGINX_LOG_DIR="/home/lanwon/docker/nginx/logs" # Nginx日志目录
BACKUP_DIR="/home/lanwon/docker/nginx/backup" # 备份目录
MAX_BACKUPS=30 # 保留的最大备份数量
# 获取当前日期作为备份文件夹名称
DATE=$(date +%Y-%m-%d)
# 创建备份目录
mkdir -p "${BACKUP_DIR}/${DATE}"
# 备份Nginx日志文件到指定日期的文件夹
cp -r "${NGINX_LOG_DIR}" "${BACKUP_DIR}/${DATE}"
# 删除超过最大备份数量的旧备份
cd "${BACKUP_DIR}"
ls -t | tail -n +$(expr ${MAX_BACKUPS} + 1) | xargs rm -rf
# 清空Nginx日志文件
find "${NGINX_LOG_DIR}" -type f -name '*.log' -exec truncate -s 0 {} \;
# 重启nginx服务,容器名称不为nginx请修改
docker restart nginx
3、新增定时任务
3.1注意shell脚本`backup_nginx_log.sh`的目录需要根据实际情况修改
0 1 * * * /home/lanwon/docker/nginx/backup/backup_nginx_log.sh