1. 手动复制日志文件
直接使用cp命令将Apache日志目录(通常为/var/log/httpd/)或特定日志文件(如access_log、error_log)复制到备份目录。适用于临时备份或小批量数据迁移场景。
示例命令:
sudo cp -r /var/log/httpd /backup/apache_logs_manual
# 或仅复制单个日志文件
sudo cp /var/log/httpd/access_log /backup/apache_access.log
sudo cp /var/log/httpd/error_log /backup/apache_error.log
2. 使用tar打包压缩备份
通过tar命令将日志目录打包为.tar.gz格式,减少存储空间占用并便于传输。适合定期归档或异地备份。
示例命令:
sudo tar -czvf /backup/apache_logs_$(date +%Y%m%d).tar.gz /var/log/httpd
# 解压验证:tar -xzvf apache_logs_20251026.tar.gz -C /tmp
3. rsync增量/同步备份
利用rsync命令实现增量备份(仅复制自上次备份后变化的文件),节省时间和存储资源。适合需要频繁更新备份的场景。
示例命令:
sudo rsync -av /var/log/httpd/ /backup/apache_logs_sync/
# 若需删除目标目录中源目录不存在的文件(严格同步),添加--delete选项
sudo rsync -av --delete /var/log/httpd/ /backup/apache_logs_sync/
4. 脚本自动化备份
编写Shell脚本整合日志备份、命名(含日期)、压缩等操作,提升效率。脚本示例如下:
#!/bin/bash
BACKUP_DIR="/backup/apache_logs_auto"
DATE=$(date +%Y%m%d)
mkdir -p "$BACKUP_DIR"
tar -czvf "$BACKUP_DIR/apache_logs_$DATE.tar.gz" /var/log/httpd
# 可扩展为备份配置文件、网站数据等
# tar -czvf "$BACKUP_DIR/apache_config_$DATE.tar.gz" /etc/httpd/conf
赋予执行权限:chmod +x /usr/local/bin/backup_apache_logs.sh
5. 定时任务(cron)自动执行
通过crontab设置周期性备份任务(如每天凌晨2点),无需人工干预。确保备份持续进行。
操作步骤:
sudo crontab -e
# 添加以下行(每天凌晨2点执行脚本)
0 2 * * * /usr/local/bin/backup_apache_logs.sh
# 保存退出后,cron会自动加载任务
6. 日志轮转(logrotate)内置备份
利用CentOS自带的logrotate工具,自动切割、压缩、删除旧日志,无需额外脚本。适合常规日志管理。
配置示例:编辑/etc/logrotate.d/httpd文件,添加以下内容:
/var/log/httpd/*log {
daily # 每天轮转
missingok # 忽略缺失文件
rotate 7 # 保留7天备份
compress # 压缩旧日志(.gz格式)
delaycompress # 延迟压缩(避免当天压缩当天日志)
notifempty # 空日志不轮转
create 640 root apache # 创建新日志文件并设置权限
sharedscripts # 所有日志处理完成后执行脚本
postrotate
/bin/systemctl reload httpd > /dev/null 2>&1 || true
endscript
}
保存后,logrotate会按配置自动处理日志,无需手动干预。