리눅스 로그 자동 삭제 쉘 스크립트 적용하기
- 운영체제(OS)
- 2023. 2. 11.
리눅스에서 지속적으로 생성되는 로그 파일을 백업하고 지우는 bash 스크립트를 작성해 보겠습니다. 스크립트가 잘 작동하면 crontab에 등록해서 매월 자동으로 로그를 백업하고 지우는 스케줄러도 적용해 보겠습니다. 이와 비슷한 작업이 필요하신 분들에게는 좋은 참고가 될 것입니다.
로그 삭제 자동화 방법
저는 주기적으로 시스템 로그가 쌓이는 /var/log 경로에 있는 로그를 다른 파티션으로 백업하고 해당 로그 파일은 지우는 상황을 가정하고 구현하겠습니다.
1. 삭제 경로, 백업 경로 확인
먼저 /var/log 경로에 testmessages* 형태의 파일을 임의로 생성하겠습니다. 시스템 로그가 쌓이고 저장되는 형태와 동일하게 만들었습니다.
[root@localhost log]# pwd
/var/log
[root@localhost log]# ls -l | grep testmessages*
[root@localhost log]# ls -l | grep testmessages
-rw-r--r--. 1 root root 13 Feb 10 02:52 testmessages
-rw-r--r--. 1 root root 5 Feb 10 02:52 testmessages-20230208
-rw-r--r--. 1 root root 5 Feb 10 02:52 testmessages-20230209
백업 경로는 /home/test로 정하겠습니다.
2. 로그 삭제 스크립트 생성
사용할 스크립트는 아래와 같습니다.
#!/bin/bash
# 로그를 삭제할 경로와 백업할 경로 변수 설정
log_dir=/var/log
backup_dir=/home/test
# 삭제할 경로가 존재하는지 확인
if [ -d "$log_dir" ]; then
# 백업할 경로가 존재하는지 확인. 만약 없으면 생성
if [ ! -d "$backup_dir" ]; then
mkdir -p "$backup_dir"
fi
# 로그 파일을 백업
cp -r "$log_dir"/testmessages* "$backup_dir"
# 로그 파일을 삭제
rm -rf "$log_dir"/testmessages*
# 로그파일을 백업하고 삭제했다는 메시지 출력
echo "Log files have been deleted and backed up to $backup_dir"
else
# 만약 삭제할 경로가 없으면 메시지 출력
echo "The log directory $log_dir does not exist."
fi
※ 주의 : 이 스크립트는 루트 권한으로 rm -rf를 수행하기 때문에 사용에 각별히 주의해야 합니다. 테스트 환경에서 먼저 적용해보시는 게 좋습니다.
위 스크립트 내용을 /home/test 경로에 logbackup.sh라는 이름으로 만들겠습니다. 참고로 뒤에 붙이는 .sh 확장자는 쉘 스크립트 파일이라는 걸 명시하기 위함입니다. 리눅스에선 확장자를 보고 파일을 실행하지 않기 때문에 확장자 없이도 실행은 됩니다. 되도록 sh 확장자를 붙이는 걸 추천드립니다.
[root@localhost test]# vi logbackup.sh
[root@localhost test]# ls -l
total 4
-rw-r--r--. 1 root root 695 Feb 10 03:04 logbackup.sh
logbackup.sh 파일에 실행 권한을 부여합니다.
[root@localhost test]# chmod 755 logbackup.sh
[root@localhost test]# ls -l
total 4
-rwxr-xr-x. 1 root root 695 Feb 10 03:04 logbackup.sh
3. 스크립트 실행 테스트
작성한 스크립트를 실행합니다. 스크립트에 작성한 대로 로그 파일을 백업하고 삭제했다는 출력이 나옵니다.
[root@localhost test]# ./logbackup.sh
Log files have been deleted and backed up to /home/test
의도한대로 /var/log 경로에 있던 로그 파일이 /home/test 경로로 백업되고 기존 경로에 있던 원본 파일은 삭제됐습니다.
[root@localhost test]# ls
logbackup.sh testmessages testmessages-20230208 testmessages-20230209
[root@localhost test]# ls /var/log | grep testmessages
[root@localhost test]#
4. crontab 등록
이제 crontab에 등록해서 매월 첫 번째 날에 logbackup.sh를 실행하도록 설정하겠습니다.
[root@localhost test]# crontab -e
0 0 1 * * /home/test/logbackup.sh
crontab이 잘 등록됐는지 확인합니다.
[root@localhost test]# crontab -l
0 0 1 * * /home/test/logbackup.sh
크론탭 설정 방법에 대해서는 추가로 찾아보시고 원하는 방식으로 설정하시면 됩니다.
'운영체제(OS)' 카테고리의 다른 글
맥OS DMG, PKG 파일이란? (프로그램 설치) (0) | 2023.03.10 |
---|---|
좀비 프로세스란? 발생 이유와 확인 방법 (0) | 2023.02.11 |
리눅스 OOM-killer란? 메모리 부족 현상 (0) | 2023.02.09 |
리눅스 파일 실행할 때 ./를 쓰는 이유 (0) | 2023.02.08 |
윈도우 PowerShell이란? CMD와 차이 (0) | 2023.02.05 |