본문 바로가기

컴퓨터/리눅스

리눅스 파일 압축하기 압축풀기

리눅스 압축 명령어 정리. 

console 창에서 직접 압축을 하는 방법으로 tar, gzip, bzip2 , zip , compress 명령을 정리해 보려고 합니다.
* Tar 
tar 는 압축방식은 아니고, 여러 개의 파일을 하나로 묶어주는 역할을 합니다. 주로 리눅스에서는 tar를 사용해서 파일을 하나로 묶은 다음 그 묶은 파일을 압축명령어를 사용하여 압축합니다.
옵션으로는 
-c : create 의 약자로 묶음파일을 생성합니다.
-x : extract 의 약자로 묶음파일에서 데이터를 추출합니다.
-v : visual 의 약자로 묶음 생성 or 추출 시 그 과정을 눈으로 볼수 있게 보여줍니다.
-f : 사용할 tar 파일을 지정하는 명령으로 묶음이나 묶음해제시 필수적으로 넣어야 하는 명령입니다.
- r : 이미 묶음이 완료된 파일에 새로운 파일을 추가시킬 때 사용하는 명령입니다.
-t : 압축파일 안에 어떤파일이 들어있는지 내용을 확인합니다.
-z : tar로 묵은후 gzip으로 압축/해제 합니다.
-j : tar로 묶은후 bzip2로 압축/해제 합니다.
사용 예 :
tar cvf achive.tar /root/*  --> root 이하의 모든 파일과 디렉토리를 achive.tar 파일로 묶는다. 
tar czvf achive.tar.gz /root/* -->root 이하의 모든 파일과 디렉토리를 achive.tar로 묶은후 gzip을 사용해서achive.tar.gz으로 압축한다.
tar cjvf achive.tar.bz2 /root/* --> root 이하의 모든 파일과 디렉토리를 achive.tar로 묶은후 bzip2를 사용해서 achive.tar.bz2로 압축한다.
tar xvf achive.tar --> achive.tar 라는 묶음파일을 해제 시킨다.
tar tvf achive.tar --> achive.tar 라는 파일에 어떤파일들이 묶여 있는지 확인한다.
tar rf achive.tar file.txt --> achive.tar 라는 묶음파일에 file.txt라는 새로운 파일을 추가한다.
옵션앞에 "-" 기호는 붙여도 되고 안붙여도 됩니다.

* gzip 
한개의 파일만 압축할 수 있기 때문에 tar와 함께 쓰이며 압축후 기본적으로 원본파일은 사라집니다.
gzip의옵션으로는
-n : n은 1부터 9까지 숫자로 지정하며 1이 가장 빠르게 압축을 하지만 압축율은 가장 낮습니다.
-c : 원본파일은 그대로 놔두며 압축합니다.
-d : decompress,압축을 해제합니다.
-l : 압축 파일의 정보를 출력합니다.
-r : 디렉토리를 지정 시 디렉토리에 포함된 모든 파일을 압축합니다.(한개의 파일만 압축할수 있기 때문에 각각의 파일이 각각 압축됨.)
-v : 압축 혹은 해제시 자세한 정보를 보여줌니다.
압축해제시 " gzip -d 파일명 " 으로 해제할수도 있고, gunzip 명령으로 해제할 수 도 있습니다.
gunzip 옵션
-l 압축 파일 정보 출력
-r 디렉토리 지정시 디렉토리 내의 모든 파일의 압축 해제
-v 압축해제 시 자세한 정보 출력. 

*  bzip2
.bz2 라는 확장자로 다루어 집니다. tar옵션중 j 를 이용해 tar명령어와 함께 사용할수 있습니다.
bzip2 옵션
-z : 압축합니다.
-d : 압축을 풉니다.
-k : 파일 압축 or 해제시 원본 파일을 지우지 않습니다.
-v : 작업사항을 자세히 볼수 있습니다.
-s : bzip2가 작업 중 사용하는 메모리의 양을 줄일수 있습니다. (bzip2 작업에 2.5byte 만을 사용한다.) 시간은 더 오래 걸리지만 적은 메모리에서 bzip2를 사용할 수 있습니다.
-f : 압축 , 해제 할때 같은 이름의 파일이 있을 경우 덮어쓰기를 합니다.
bzip2 -d 를 이용하여 압축을 해제 할수도 있고, bunzip2 명령으로 해제 할수도 있습니다.

* zip 
zip 압축은 다른 압축과는 다르게 암호를 설정할수 있다는 특징이 있습니다.
zip 옵션
-r 하위 디렉토리까지 포함하여 모두 압축 시킵니다.
-P [암호] : 암호를 설정할 수 있습니다.
사용 예
zip -P ilikehacker -r hacker.zip /hacker
-->/hacker라는 폴더의 하위 디렉토리까지 모두 포함하여 hacker.zip 파일로 압축한다. 이때 암호는 ilikehacker를 사용한다.

*compress
확장자 .Z 형태의 압축파일 생성 , 압축 알고리즘에 의해 크기가 줄어드는 경우에만 압축을 수행합니다.
사용 예 
compress -vf test
--> test라는 파일을 압축합니다.
uncompress -d test.Z    or    compress -d test.Z
--> test.Z파일의 압축을 해제합니다. 
-v 파일 압축 효율을 퍼센트로 보여줍니다.
-f 수행 결과 파일과 같은 이름의 파일이 있으면 물어보지 않고 덮어씁니다. 또한 파일의 크기가 줄어들지 않아도 압축을 실행합니다.  

*** 압축 알고리즘 간단히 소개.
Run-Length Encoding Algorithm ((ex)RLE)
        --> BAAAAAAC 를 BA5C 이런식으로 반복되는 문자의 길이를 세서 숫자로 표현. 반복되는 문자가 적으면 압축률이 떨어지는 단점이 있음.

Lempel-Ziv Algorithm ((ex)LZ77)
        --> ABCDEFBCDAE 를 ABCDEF(5,3)AE 이런식으로 압축. 여기서 (5,3)이라는 뜻은 5번째 전부터 시작해서 3개 까지가 반복됨을 뜻함. 이렇게 반복되는 패턴을 숫자로 치환하는 알고리즘. 

Huffman Algorithm
        --> 단순하게 예를 들면 ADDAAAAAAE 중 A의 빈도수가 가장 높고 그다음 D, E순서로 빈도수가 높다. 이 빈도수를 계산하여 높은 빈도수를 가진 패턴에 작은 bit의 코드를 부여하여 압축한다. 이때 Huffman tree를 만들어야 나중에 압축을 풀때 오류가 생기지 않는다. 


출처 : 해커스쿨 자유 강좌실 

'컴퓨터 > 리눅스' 카테고리의 다른 글

route  (0) 2013.08.12
ping, traceroute, netstat 명령어  (0) 2013.08.12
리눅스 실행 파일  (0) 2013.07.12
리눅스 시스템 끄기  (0) 2013.07.12
gcc  (1) 2013.07.06