폴더를 살펴보다가 확장자가 .gz인 파일을 발견했다면, 해당 파일은 gzip 명령으로 압축된 것입니다. gzip 명령은 Lempel-Ziv(LZ77) 압축 알고리즘을 사용하여 문서, 이미지, 오디오 파일 등 다양한 파일의 크기를 줄여 줍니다. gzip으로 압축한 파일은 필요할 때 다시 압축을 해제해야 하는데, 이 글에서는 gzip으로 압축된 파일을 해제하는 다양한 방법과 함께 실무에서 유용하게 쓸 수 있는 옵션들을 자세히 소개합니다.
gzip 명령으로 파일 압축 해제하기
gzip 명령 자체에도 .gz 확장자를 가진 파일의 압축을 해제하는 기능이 포함되어 있습니다. 파일의 압축을 풀려면 아래와 같이 -d(minus d) 옵션을 사용합니다.
gzip -d myfilename.gz
명령을 실행하면 파일이 압축 해제되고, .gz 확장자가 자동으로 제거됩니다.
gunzip 명령으로 파일 압축 해제하기
gzip -d 방식도 물론 유효하지만, 전용 명령인 gunzip을 사용하는 것이 더 직관적이고 기억하기 쉽습니다. 사용법은 다음과 같습니다.
gunzip myfilename.gz
강제로 압축 해제하기(-f 옵션)
때때로 gunzip 명령이 파일 압축 해제를 거부하는 경우가 있습니다. 가장 흔한 원인은 압축을 해제한 후 생성될 파일 이름과 동일한 이름의 파일이 이미 존재하는 경우입니다.
예를 들어 document1.doc.gz라는 파일이 있고, 같은 폴더에 이미 document1.doc라는 파일이 있다고 가정해 보겠습니다. 이 상태에서 다음 명령을 실행하면 파일이 이미 존재한다는 메시지가 나타나며, 작업을 계속할지 확인을 요구합니다.
gunzip document1.doc.gz
Y를 입력하면 기존 파일을 덮어쓰고 진행할 수 있습니다. 하지만 gunzip을 스크립트의 일부로 사용한다면 사용자에게 확인 메시지를 표시하고 싶지 않을 것입니다. 확인 대기 상태가 되면 스크립트 실행이 멈추고 입력을 요구하기 때문입니다.
이럴 때는 다음과 같이 -f 옵션을 사용하여 강제로 압축을 해제할 수 있습니다.
gunzip -f document1.doc.gz
-f 옵션을 사용하면 동일한 이름의 기존 파일을 묻지도 따지지 않고 덮어쓰게 됩니다. 따라서 중요한 파일이 실수로 삭제되지 않도록 이 옵션은 신중하게 사용해야 합니다.
압축 파일과 압축 해제 파일 모두 유지하기(-k 옵션)
기본적으로 gunzip 명령은 파일의 압축을 해제한 뒤 원본 압축 파일을 삭제합니다. 즉, myfile.gz라는 파일은 압축 해제 후 myfile이라는 이름으로 원래 크기만큼 확장됩니다.
파일의 압축을 풀면서 동시에 압축된 원본도 보관하고 싶다면 다음 명령을 실행하세요.
gunzip -k myfile.gz
명령 실행 후에는 myfile과 myfile.gz 두 파일이 모두 남게 됩니다.
압축 해제 없이 내용 출력하기(-c 옵션)
압축된 파일이 텍스트 파일이라면, 굳이 압축을 먼저 풀지 않아도 내용을 바로 확인할 수 있습니다. 다음 명령을 사용하세요.
gunzip -c myfile.gz
위 명령은 myfile.gz의 내용을 터미널 화면에 그대로 출력합니다. 원본 압축 파일은 그대로 유지됩니다.
압축 파일 정보 확인하기(-l 옵션)
gunzip 명령에 -l 옵션을 붙이면 압축 파일에 대한 상세 정보를 확인할 수 있습니다.
gunzip -l myfile.gz
위 명령의 출력 결과에는 다음 정보들이 포함됩니다.
- 압축된 크기
- 압축 해제 시 크기
- 압축률(Ratio)
- 압축 해제 시 사용될 파일 이름
이 옵션이 특히 유용한 경우는 대용량 파일을 다루거나 디스크 여유 공간이 부족할 때입니다.
예를 들어 용량이 10GB인 드라이브에 8GB 크기의 압축 파일이 있다고 가정해 보겠습니다. 무작정 gunzip 명령을 실행하면, 압축 해제 후 크기가 15GB에 달해 명령이 실패할 수 있습니다.
-l 옵션으로 미리 확인하면 압축을 해제할 대상 디스크에 충분한 공간이 있는지 검증할 수 있고, 압축 해제 시 생성될 파일 이름도 미리 파악할 수 있습니다.
하위 폴더까지 한 번에 압축 해제하기(-r 옵션)
특정 폴더와 그 하위의 모든 폴더에 있는 .gz 파일을 한꺼번에 압축 해제하려면 다음 명령을 사용합니다.
gunzip -r foldername
예를 들어 다음과 같은 폴더 구조와 파일이 있다고 가정해 보겠습니다.
- Documents
- mydoc.gz
- mydoc1.gz
- Accounts
- spreadsheet1.gz
- spreadsheet2.gz
이 경우 다음 명령 하나로 Documents 폴더 아래의 모든 압축 파일을 해제할 수 있습니다.
gunzip -r Documents
압축 파일의 유효성 검사하기(-t 옵션)
파일이 gzip으로 올바르게 압축되었는지 테스트하려면 다음 명령을 실행합니다.
gunzip -t filename.gz
파일에 문제가 있으면 오류 메시지가 출력되고, 정상이라면 별도의 메시지 없이 프롬프트로 돌아옵니다.
압축 해제 과정 상세 정보 표시하기(-v 옵션)
기본적으로 gunzip 명령을 실행하면 .gz 확장자가 제거된 압축 해제 파일만 남습니다. 더 자세한 정보를 확인하고 싶다면 -v(verbose) 옵션을 사용하세요.
gunzip -v filename.gz
실행 결과는 대략 다음과 같이 표시됩니다.
filename.gz: 20% -- replaced with filename
이 출력을 통해 원본 압축 파일의 이름, 압축 해제율(줄어든 비율), 최종 생성된 파일 이름을 한눈에 확인할 수 있습니다.