리눅스에서 아파치 웹 서버 로그 파일 자동 압축 및 백업하기

리눅스 서버를 운영하면서 로그 파일을 관리하는 것은 매우 중요한 작업입니다.
특히 웹 서버의 로그 파일은 시간이 지남에 따라 용량이 커질 수 있으며, 이를 주기적으로 압축하고 백업하는 작업이 필요합니다.
이번 포스팅에서는 아파치(Apache) 웹 서버의 로그 파일을 자동으로 압축하고 백업하는 스크립트를 작성해 보겠습니다.
이 스크립트를 통해 로그 파일 관리를 자동화하면 서버의 디스크 용량을 효율적으로 사용할 수 있습니다.



서론

웹 서버 로그 파일은 서버의 운영 상태를 모니터링하고 문제를 분석하는 데 중요한 역할을 합니다.
하지만 이러한 로그 파일은 매일 생성되고, 오래된 로그 파일을 그대로 두면 서버의 디스크 용량을 차지하게 됩니다.
이를 해결하기 위해 로그 파일을 주기적으로 압축하고 백업하는 작업이 필요합니다.
이번 포스팅에서는 아파치 웹 서버 로그 파일을 자동으로 압축하고 백업하는 스크립트를 소개하겠습니다.

본론

스크립트 작성하기

로그 파일을 압축하고 백업하는 스크립트를 작성해 보겠습니다.
이 스크립트는 매일 생성되는 로그 파일을 압축하고, 백업 디렉토리에 저장하도록 설계되었습니다.
log_backup.sh라는 파일명으로 작성하겠습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/bash
 
# 아파치 로그 파일 경로 설정
LOG_DIR="/var/log/apache2"
BACKUP_DIR="/path/to/backup/directory"
DATE=$(date +\%Y-\%m-\%d)
 
# 압축 파일명 설정
LOG_ARCHIVE="apache-logs-$DATE.tar.gz"
 
# 백업 디렉토리가 존재하지 않으면 생성
if [ ! -"$BACKUP_DIR" ]; then
  mkdir -"$BACKUP_DIR"
fi
 
# 로그 파일 압축
tar -czf "$BACKUP_DIR/$LOG_ARCHIVE" -"$LOG_DIR" .
 
# 압축 결과 확인
if [ $? -eq 0 ]; then
  echo "[$(date +\%Y-\%m-\%d\ \%H:\%M:\%S)] 로그 파일 압축 및 백업 성공: $LOG_ARCHIVE" >> "$BACKUP_DIR/backup.log"
else
  echo "[$(date +\%Y-\%m-\%d\ \%H:\%M:\%S)] 로그 파일 압축 및 백업 실패" >> "$BACKUP_DIR/backup.log"
fi
 
# 30일 이상된 백업 파일 삭제
find "$BACKUP_DIR" -type f -name "apache-logs-*.tar.gz" -mtime +30 -exec rm {} \;
 
cs

스크립트 설명

로그 파일 경로 및 백업 디렉토리 설정: LOG_DIR와 BACKUP_DIR 변수에 아파치 로그 파일 경로와 백업 디렉토리를 설정합니다.
날짜 포맷 설정: DATE 변수에 현재 날짜를 YYYY-MM-DD 형식으로 저장합니다.
압축 파일명 설정: LOG_ARCHIVE 변수에 압축 파일명을 설정합니다.
백업 디렉토리 확인 및 생성: 백업 디렉토리가 존재하지 않으면 mkdir 명령어를 통해 생성합니다.
로그 파일 압축: tar 명령어를 사용하여 로그 파일을 압축합니다.
압축 결과 확인: 압축이 성공했는지 확인하고, 결과를 로그 파일에 기록합니다.
오래된 백업 파일 삭제: find 명령어를 사용하여 30일 이상된 백업 파일을 삭제합니다.


스크립트 실행 권한 부여하기

스크립트를 작성한 후에는 실행 권한을 부여해야 합니다.
다음 명령어를 사용하여 실행 권한을 부여합니다.


1
2
chmod +/path/to/log_backup.sh
 
cs

크론탭 설정하기

이제 이 스크립트를 매일 자동으로 실행되도록 설정해야 합니다.
이를 위해 크론탭(crontab)을 사용합니다.


1
0 2 * * * /path/to/log_backup.sh
cs

결론

이렇게 하면 아파치 웹 서버의 로그 파일이 매일 자동으로 압축되고 백업됩니다.
또한, 오래된 백업 파일이 자동으로 삭제되어 디스크 용량을 효율적으로 사용할 수 있습니다.
로그 파일 관리는 서버 운영에 매우 중요한 부분이므로, 이번에 소개한 스크립트를 활용해 보시길 추천합니다.

댓글

이 블로그의 인기 게시물

crontab 설정방법과 로그 확인하는 법

Microsoft Defender 방화벽 설정 또는 해제하는 방법

한국 군비지출 세계 9위