gzip 명령어를 통한 로그 파일 압축하기
필자는 gzip 명령어를 사용할 것이기 때문에, 사전에 gzip 패키지를 설치하길 바란다.
아래 방법으로 gzip명령어가 설치 되어 있는지 확인할 수 있다.
[root@parkjw _logs_]# ls /usr/bin/ | grep gzip
gzip
[root@parkjw _logs_]# gzip
gzip: compressed data not written to a terminal. Use -f to force compression.
For help, type: gzip -h
Bash
복사
find 명령어를 통하여 압축을 할 로그를 찾는다
[root@parkjw _logs_]# find -name "*.log"
./wrapper_20200810.log
./wrapper_20200710.log
./wrapper_20200712.log
./wrapper_20200711.log
./wrapper_20200715.log
./wrapper_20200726.log
./wrapper_20200809.log
./wrapper_20200717.log
Bash
복사
[root@parkjw _logs_]# find -name "*07[1...2]*.log"
./wrapper_20200710.log
./wrapper_20200712.log
./wrapper_20200711.log
./wrapper_20200715.log
./wrapper_20200726.log
./wrapper_20200717.log
./wrapper_20200713.log
./wrapper_20200716.log
./wrapper_20200722.log
./wrapper_20200718.log
./wrapper_20200724.log
./wrapper_20200720.log
./wrapper_20200714.log
./wrapper_20200725.log
./wrapper_20200719.log
./wrapper_20200721.log
./wrapper_20200723.log
Bash
복사
Tip. 위와 같이 특정 날짜의 로그만 검색 할 수 있다.
임시 shell script file을 생성하여 검색 결과 값을 저장
[root@parkjw _logs_]# find -name "*.log" > zip.sh
[root@parkjw _logs_]# cat zip.sh
./wrapper_20200810.log
./wrapper_20200710.log
./wrapper_20200712.log
./wrapper_20200711.log
./wrapper_20200715.log
./wrapper_20200726.log
./wrapper_20200809.log
./wrapper_20200717.log
Bash
복사
zip.sh에 정규표현식을 사용하여 gzip 명령어를 일괄 추가
[root@parkjw _logs_]# vi zip.sh
vim > :%s/.\//gzip -9 .\//g
# 설명: "./" 을 "gzip -9 ./"로 치환한다.
vim > :wq
# 설명: 변경 내용을 저장하고 vim 에디터를 닫는다.
Bash
복사
일괄 압축쉘 (zip.sh)의 내용을 확인
[root@parkjw _logs_]# cat zip.sh
gzip -9 ./wrapper_20200810.log
gzip -9 ./wrapper_20200710.log
gzip -9 ./wrapper_20200712.log
gzip -9 ./wrapper_20200711.log
gzip -9 ./wrapper_20200715.log
gzip -9 ./wrapper_20200726.log
gzip -9 ./wrapper_20200809.log
gzip -9 ./wrapper_20200717.log
Bash
복사
Tip. gzip 명령어의 옵션 중 -숫자 는 압축률을 의미한다. 숫자가 클 수록 압축률이 높다. ( 1 ~ 9 )
일괄 압축쉘 (zip.sh)을 실행
[root@parkjw _logs_]# sh zip.sh &
# 설명 : zip.sh에 작성된 명령어를 백그라운드(&)에서 작업을 돌리겠다.
[1] 9822
# 설명 : 해당 스크립트는 9822의 pid를 가지면서 백그라운드 잡에 들어갔다. (bg 명령어로 통해 확인 가능)
[root@parkjw _logs_]# ps -ef | grep gzip
# 위 명령어로 쉘이 돌고 있는지(프로세스가 살아 있는지) 확인 할 수 있다.
[1]+ Done sh zip.sh
# 설명: 쉘에 작성된 작업이 다 끝나면 아래와 같이 터미널에 완료 메시지가 출력된다.
Bash
복사
압축된 로그의 용량 확인
gzip으로 압축하기 전과 용량 차이가 꽤 많이 나는 것을 확인 할 수 있다.
[root@parkjw _logs_]# ll wrapper_20200710.log.gz
-rw-r--r-- 1 root root 79439 Jul 10 23:00 wrapper_20200710.log.gz
# 압축하기전 로그 파일 용량
-rw-r--r-- 1 root root 968413 Jul 10 23:00 wrapper_20200710.log
Bash
복사
Tip. ~.gz 압축 파일은 vim 에디터로 열 수 있다! 하지만, 아쉽게도 tail로는 볼 수 없다 ㅠ.ㅠ
.gz 파일을 원래대로 압축 해제하는 방법
gzip -d "파일이름"
Bash
복사