리눅스에서 로그를 백업하는 방법은 크게 아래의 세가지 방법중에 하나를 택하여 사용한다.
커맨드 라인을 사용하여 백업하기
커맨드 라인을 사용하여 백업하는 방식은 디스크가 부족하거나 필요에 의해서 특정 기준으로 산출하여 압축 또는 삭제를 해야할 때 주로 사용한다.
모든 파일을 백업한 후 삭제하기
find ./ -not -name "*.tar.gz" -mtime +1 -type f -exec tar czvf {}.tar.gz {} \\;
find ./ -not -name "*.tar.gz" -mtime +1 -type f -exec rm -f {} \\;
log 파일만 백업하고 삭제하기
find ./ -not -name "*.tar.gz" -name "*.log" -mtime +1 -type f -exec tar czvf {}.tar.gz {} \\;
find ./ -not -name "*.tar.gz" -name "*.log" -mtime +1 -type f -exec rm -f {} \\;
스크립트를 작성하여 백업하기
만약 커맨드 라인을 통해서 확인이 완료되었다면 스크립트를 작성하여 자동으로 동작하게 하는 것이 디스크 관리에 도움이 된다.
로그를 백업한 후 자동으로 이동하기
아래의 스크립트를 vi(m) 또는 emacs 등의 편집기를 사용하여 스크립트 파일을 작성한다.
#!/bin/sh
#Script by www.skultz.com
LOGS_DIR=/log/path
LOGS_BACKUP_DIR=/log/backup/path
TODAY=`date +%Y%m%d%H`
cd $LOGS_DIR
find . -not -name "*.tar.gz" -mtime +1 -type f -exec tar czvf {}.$TODAY.tar.gz {} \\;
find . -not -name "*.tar.gz" -mtime +1 -type f -exec rm -f {} \\;
find . -name "*.tar.gz" -type f -exec cp --parents {} $LOGS_BACKUP_DIR \\;
find . -name "*.tar.gz" -type f -exec rm -f {} \\;
쉘 스크립트를 작성한 후에는 해당 스크립트 파일에 실행 권한을 추가한다.
$ chmod 700 script.sh
스크립트를 주기적으로 실행하기 위해 crontab 을 수정하여 내용을 추가합니다.
$ crontab -e
아래의 내용을 crontab에 추가한다.
5 0 * * * /log/backup/path/script.sh >> /log/backup/log/path/backup_log.log 2>&1
매일 0시 5분이 되면 설정된 경로로 이동하여 하위 디렉터리의 모든 로그를 백업한 후 지정된 경로로 이동 시킨다. 압축이 된 상태로 이동되므로 공간이 절약되며, tar 을 사용하였기 때문에 vi 를 통해서 열람이 가능하다.
logrotate 를 사용하기
logrotate 는 리눅스에서 기본으로 지원하는 로그 백업 도구이다. 많은 프로세스들이 이 도구를 사용하고 있다. logrotate 의 스크립트 파일은 /etc/logrotate.d/ 아래에 위치한다. logrotate 데몬은 주기적으로 확인하여 변경 사항을 확인한 후 스케줄링하여 로그를 백업 그리고 압축을 실시한다.
설정 파일의 생성
logrotate 의 경로에 스크립트를 추가하기 위해서는 관리자 권한이 필요하다.
$ sudo vi /etc/logrotate.d/my_log
설정 파일 수정
백업하고자 하는 경로와 설정을 작성한다. 이 설정은 일 기준으로 5개까지 데이터를 압축하여 보관하도록 설정되어 있다. 자세한 옵션은 logrotate man page 를 통해 확인하도록 하자.
/path/to/log/logfile.log
/path/to/log/*.log
{
su root root
rotate 5
copytruncate
daily
missingok
notifempty
compress
delaycompress
sharedscripts
create 644 root root
}
테스트
테스트 커맨드를 실행할 경우 설정된 조건에 맞게 동작한다. 강제로 백업을 하도록 하고자 할 경우에는 -f 옵션을 주고 실행한다. 다만 실행 기준 시점이 실행 시점으로 변경되므로 주의하여 실행하자.
$ sudo logrotate -f /etc/logrotate.d/my_log
$ ls -alh /path/to/log/
만약 동작 상태가 궁금하다면 아래의 커맨드를 사용하여 확인이 가능하다.
$ cat /var/lib/logrotate.status
'리눅스' 카테고리의 다른 글
리눅스 /boot disk full 해소하기 (0) | 2021.03.02 |
---|---|
Screen 사용법 (0) | 2021.03.02 |
SCP 사용법 (0) | 2021.03.02 |
Source list 변경 (0) | 2021.03.02 |
라우팅 테이블 관리 (0) | 2021.03.02 |