Search
Duplicate

gzip 명령어를 활용한 로그 압축하는 방법

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
복사