Choi Kyeong Min Report

리눅스와 압축

리눅스와 윈도우 파일 압축 방식2

파일 압축

기본적으로 리눅스의 압축 명령어는 compress, zip, gzip, bzip2, xz 가 있는데, 이중에 gzip, bzip2, xz 명령어를 주로 사용하는 편이다.

tar 명령어에서 gzip이나 bzip 등 압축 옵션을 사용할 수 있기 때문에, 압축 명령어를 단독으로 사용하는 경우는 드문 편이다.

리눅스 압축 형식

압축형태 기본형태 축약 간략설명
gzip .tar.gz .tgz zip과 같은 압축 알고리즘을 사용하지만 더 용량이 작음.(다른 파일끼리의 중복되는 부분을 하나로 압축이 가능하기 때문)
xzip .tar.xz .txz LZMA2 압축 알고리즘을 사용하는 7-zip은 윈도우에서만 제공하는데 유닉스에 제공하기위해 사용됨압축효율이 가장 좋음.
bzip .tar.bz2 .tb2, .tbz, .tbz2 용량이 클 때, gzip에 비해 압축률은 좋지만 비교적 느림
Z .tar.Z .tZ ASCII나 바이너리 파일을 의미
lzma .tar.lzma .tlz bzip2보다 더 높은 압축률 제공(최대 4GB)
  .tar.lz   LZMA 알고리즘에 기초함무결성을 확인하기 위한 CRC 체크섬이 지원됨

gzip / gunzip 명령어

gzip 명령어는 GNU zip의 약어로 gzip 명령어를 통해 압축이 성공하면 기존 원본 파일은 모두 사라지고 .gz 확장자를 가진 파일을 새롭게 생성한다.

Linux에서 여러 파일을 압축할 때는 tar 명령어로 파일을 묶고, gzip 명령어를 tar 명령어로 만들어진 아카이브 파일을 압축하기 때문에 단독으로 잘 쓰이지는 않는 편이다.

# gzip설치
$ apt-get install gzip 

# 압축하기
$ gzip [옵션] [파일명] 

# 압축풀기
$ gzip -d [파일명]
$ gunzip [파일명] 

# 압축된 파일의 내용 확인
$ gzip -l [파일명]
$ zcat [파일명]
옵션 설명
-d 압축을 풀 때 사용하는 옵션이다.
-1 파일의 압축 시간을 줄인다. 이 옵션을 사용하면 압축은 빠르지만 압축률은 떨어진다.
-9 파일을 최대로 압축한다. 압축률은 좋아지지만 시간이 많이 걸린다.
-l 압축 파일에 대한 정보를 출력하는 명령이다.
-v 진행 과정을 이름 및 퍼센트와 함께 자세히 보여준다.

bzip2 / bunzip2 명령어

버로우즈-휠러 변환이라는 블록 정렬 알고리즘과 허브만 부호화를 사용한 압축 프로그램이다.

gzip보다 압축률은 좋지만, 압축하는데 더 많은 시간이 걸린다.

bzip2로 압축하면 파일명 뒤에 .bz2가 붙고, 압축 해제는 bunzip2 명령을 사용한다.

$ bzip2 [압축 파일 이름] [압축 대상 파일, 폴더명]

#압축
$ bzip2 text.txt

# 압축 해제
$ bunzip2 text.txt.bz2
옵션 설명
-d 압축을 풀 때 사용하는 옵션이다.
-1 파일의 압축 시간을 줄인다. 이 옵션을 사용하면 압축은 빠르지만 압축률은 떨어진다.
-9 파일을 최대로 압축한다. 압축률은 좋아지지만 시간이 많이 걸린다.
-c 결과를 표준 출력으로 보낼 때 사용한다. tar와 병행해서 작업할 때 사용한다.
-t 압축 파일을 검사한다.

xz / unxz 명령어

LZMA2라는 알고리즘을 이용하여 만든 데이터 무손실 압축 프로그램이다.

gzip 및 gzip2와 비교하여 매우 높은 압축률을 자랑한다.

높은 압축률로 인하여 최근 공개용 소프트웨어 사이트에서 이 압축 포맷을 사용하여 파일을 배포하고 있다.

xz로 압축하면 파일명 뒤에 .xz가 붙고, 압축 해제는 unxz 명령을 사용한다.

Tip

압축의 효율성으로 따지자면,xz > bzip2 > zip > compress의 순으로 압축이 잘되며, 당연히 압축률이 높을 수록 압축하는 시간은 더 걸린다.그러므로 가장 비효율적인 압축명령어는 ‘compress’가 된다

BASH

# 압축$ xz [옵션] [파일명]# 압축풀기$ xz -d [파일명]$ unxz [옵션] [파일명]Copy
옵션 내용
-z 압축할 때 사용하는 옵션이다. 기본적으로 설정되어 있어서 사용하지 않아도 된다.
-d 압축을 풀 때 사용하는 옵션이다.

zip / unzip 명령어

zip은 여러 파일을 묶고 압축할 수 있는 유틸리티로 tar와는 달리 아카이빙과 압축을 함께 할 수 있는 특징이 있다.

윈도우와 같이 압축 확장자 명은 .zip 이다.

또한, 이전의 압축명령어와는 달리 마치 윈도우의 zip프로그램 처럼 원본파일이 사라지지않고 그대로 남는다.

또한 윈도우에서 주로 사용하는 압축 형태인 zip 파일을 리눅스 서버로 옮겨서 작업하는 경우도 종종 있는데, 윈도우zip파일을 풀때 바로 이 직관적인 명령어를 사용 하면 된다.

$ apt-get install zip# zip 설치$ zip [압축 파일명][압축할 파일명]$ unzip [파일명]Copy
# mylog.log를 mylog.zip으로 압축하기(단일 파일 압축)
zip mylog.zip mylog.log
# mylog1.log, mylog2.log, mylog3.log를 mylog.zip으로 압축하기(다중 파일 압축)
zip mylog.zip mylog1.log mylog2.log mylog3.log
# 현 위치 디렉토리와 하위 디렉토리를 모두 test.zip으로 압축
zip -r test.zip ./*
# test.zip 압축 해제
unzip test.zip

zip 명령어 옵션

  • n : n은 1부터 9까지 숫자의 설정으로, 1이 가장 빠르지만 압축률은 가장 낮음
  • r : 하위 디렉터리까지 포함하여 압축
  • e : zip 파일에 암호 설정
  • x : 압축시 파일 제외
  • P : 압축 파일 생성 시 암호를 입력하여 생성
  • d : 지정된 위치에 압축 해제

unzip 명령어 옵션

  • a : 압축 해제 텍스트 파일을 기본적으로 자동 변환
  • L : 파일 이름을 대문자 시스템에서 소문자로 변환
  • C : 대소 문자를 구분하지 않고 이름을 일치시킴
  • o : 항상 파일을 덮어쓰기
  • n : 파일을 추출할 때 파일을 덮어쓰지 않음
서브목차