본문 바로가기

스크립트

웹 액세스 로그 백업 스크립트

반응형

웹 액세스 로그 백업 스크립트

스크립트 작성

vim web_log_backup.sh
#!/bin/bash
#
# Script Name : web_log_backup.sh
# Description : Daily/Monthly backup script for Apache access & error logs
#

set -euo pipefail

# ===== Configuration =====
LOG_DIR="/svc/idp/web/apache/logs"
YESTERDAY=$(date --date '1 day ago' +%Y%m%d)
TODAY=$(date +%d)
YYYYMM=$(date --date '28 days ago' +%Y%m)
RETENTION_DAYS=180

# ===== Move to log directory =====
cd "${LOG_DIR}" || {
    echo "❌ Failed to access log directory: ${LOG_DIR}"
    exit 1
}

# ===== Daily backup =====
echo "▶ Daily backup for ${YESTERDAY}"

tar zcvf "access-${YESTERDAY}.log.tgz" access-"${YESTERDAY}"*.log
tar zcvf "error-${YESTERDAY}.log.tgz"  error-"${YESTERDAY}"*.log

rm -f *-"${YESTERDAY}"*.log

# ===== Monthly backup (run on the 1st day) =====
if [ "${TODAY}" = "01" ]; then
    echo "▶ Monthly backup for ${YYYYMM}"

    tar zcvf "access-${YYYYMM}.log.tgz" access-"${YYYYMM}"??.log.tgz
    tar zcvf "error-${YYYYMM}.log.tgz"  error-"${YYYYMM}"??.log.tgz

    rm -f *-"${YYYYMM}"??.log.tgz

    # Retention policy
    find . -name "*.tgz" -mtime +${RETENTION_DAYS} -delete
fi

echo "✅ Log backup completed successfully"

실행 권한 부여

chmod +x web_log_backup.sh

실행

./web_log_backup.sh

cron 등록 시

0 2 * * * /path/web_log_backup.sh >> /var/log/web_log_backup.log 2>&1

 

728x90
반응형