본문으로 바로가기

일반적으로 윈도우에서는 파일 여러개를 '압축' 한다는 것의 의미는 해당 파일들을 하나로 묶고, 용량을 압축해 주는 것을 뜻한다. 하지만 리눅스에서는 조금 다르다.

리눅스는 파일 '압축'과 '묶기' 가 별개의 개념이며 명령어도 서로 다르다.

물론 파일을 묶고 동시에 압축을 할 수 있는 명령어가 존재하긴 하지만 두 가지를 따로 쓰는 경우가 많기 때문에 알아 두어야 한다.




파일 압축


리눅스는 다양한 압축 형태와 명령어가 존재한다. 최근에 배포된 형태일수록 더 압축률이 좋기 때문에 자주 사용된다.

리눅스의 파일 압축 형태와 명령어 종류는 다음과 같다.


xz

확장자 xz로 압축/압축해제 한다. 가장 최근에 배포된 명령어로, 압축률이 가장 좋다.

$ xz 파일명 : '파일명.xz' 로 압축한다. 기존 파일은 삭제된다.

$ xz -k 파일명 : '파일명.xz'로 압축하고 기존 파일을 삭제하지 않는다.

$ xz -d 파일명.xz : '파일명.xz' 파일을 '파일명' 일반 파일로 압축을 풀어준다.

$ xz -l 파일명.xz : '파일명.xz' 파일에 포함된 파일의 정보를 목록으로 보여준다.


bzip2

확장자 bz2로 압축/압축해제 한다.

$ bzip2 파일명 : '파일명.bz2'로 압축한다. 기존 파일은 삭제된다.

$ bzip2 -d 파일명.bz2 : '파일명.bz2' 파일을 '파일명' 일반 파일로 압축을 풀어준다. = bunzip2


gzip

확장자 gz로 압축/압축해제 한다.

$ gzip 파일명 : '파일명.gz'로 압축한다. 기존 파일은 삭제된다.

$ gzip -d 파일명.gz : '파일명.gz' 파일을 '파일명' 일반 파일로 압축을 풀어준다. = gunzip


zip

windows와 호환되는 압축 확장자인 zip으로 압축/압축해제 한다.

$ zip 압축파일명.zip 대상파일명 : 대상파일을 '압축파일명.zip' 으로 압축한다.

$ unzip 압축파일명.zip : '압축파일명.zip'의 압축을 푼다.



동일한 내용의 파일을 각각 xz , bz2, gz로 압축했다. xz로 압축한 결과가 가장 압축률이 좋은 것을 확인할 수 있다.

단, 이는 파일의 내용이나 종류에 따라 차이가 있을 수 있다.



파일 묶기


리눅스는 여러 파일을 하나로 묶는 명령어로 tar를 제공한다. tar 명령어는 확장자 tar로 파일들을 묶어주는데, 이는 압축 없이 그냥 여러 파일을 하나로 묶어주는 역할만 한다.

tar 파일의 옵션에 따라 파일을 묶고 동시에 압축을 하는 것도 가능하다.


tar 동작

소문자 c : 새로운 묶음을 만든다.

대문자 C : tar 묶음을 풀 때 지정한 디렉터리 하위에 풀어준다. 지정하지 않으면 해당 tar 파일과 동일한 디렉터리에 풀린다.

x : 묶인 파일을 풀어준다.

t : 풀기 전에 경로를 보여준다.


tar 옵션

f(필수) : tar 파일의 이름을 지정한다.

v : 파일이 묶이고 풀리는 과정을 터미널상에 보여준다.

대문자 J : tar로 묶고 xz로 압축한다.

소문자 j : tar로 묶고 bzip2로 압축한다.

호문자 z : tar로 묶고 gzip으로 압축한다.



동일한 내용이 들어있는 세 개의 복사된 파일을 tar로 묶고, 압축까지 한 예제이다.

가장 마지막 부분을 보면 xz로 압축한 결과가 압도적으로 크기가 줄어든 것을 볼 수 있다.

xz는 각 파일들의 동일한 부분을 인식해서 압축률을 획기적으로 증가시키는 알고리즘이 사용된 것을 눈치챌 수 있을 것이다.

 Other Contents 

댓글을 달아 주세요

티스토리 툴바