리눅스서버

[기본] 리눅스에서 파일 압축과 풀기 "tar,bzip2,gzip"

윈도우에서는 알집이나 윈집등의 압축프로그램의 이용하여 파일을 압축하거나 풀 수 있습니다.

마찬가지로 리눅스에서도 기본 명령어를 이용해 파일압축이나 압축풀기를 할 수 있습니다.

 

파일압축에는 크게 두가지 작업을 해줘야합니다. (파일묶기와 압축)

하지만 윈도우에서는 이 두가지 작업을 동시에 해주어서 못 느낄 겁니다.

 

 

1. 파일묶기 "tar"

tar명령어는 여러파일을 한개의 파일로 단순히 묶어 주는 작업만 합니다.

여기서는 그냥 묶어만 주는 작업이기에 파일의 용량이 줄어들지 않습니다.

# tar [옵션] [파일명] [대상파일명]

 

[옵션]

-c : tar파일을 생성하여 파일을 묶습니다.

-x : 묶여있는 tar파일을 해제(푼다)합니다.

-v : 묶는 과정 또는 해제과정을 자세하게 보여줍니다.

-f : 사용할 tar파일을 지정합니다. 묶거나 해제할때 필수로 들어가야합니다.

-r : 이미 묶여있는 tar파일에 새로운 파일을 추가 시킵니다.

-t : tar파일 안에 묶여있는 파일을 보여줍니다.

-z : tar파일로 묶는 동시에 gzip로 압축을 진행합니다.

-j : tar파일로 묶는 동시에 bzip2로 압축을 진행합니다.

 

[파일명]

파일을 묶을 때는 입력한 파일명으로 tar파일을 생성합니다.

(생성할때 tar파일을 구분하기위해 파일명에 확장자(tar)를 꼭 붙여서 입력하세요. ex. conory.tar)

해제할때는 해제할 tar파일을 입력합니다.

 

[대상파일명]

파일을 묶을 때 묶을 파일이나 디렉토리(폴더)를 입력합니다. ex. /home/conory/*  ---> conory폴더 안에 있는 파일들을 묶습니다.

해제할때는 생략합니다.

 

 

2. 압축하기

bzip2, gzip ,zip등... 의 여러가지 방식으로 파일을 압축할 수 있습니다.

여기서 "여러가지 방식? 압축에 무슨방식이 있는 가? 그냥압축하면 되지.."이라고 의문을 품을 수 있습니다.

압축을 하는 이유는 여러가지가 있지만, 제일 중요한 "용량 줄이기"를 위해 압축한다고 생각하면 됩니다.

"그럼 어떻게 파일용량을 줄일까?"가 압축방식에 해당합니다. 예를 들면 종이의 부피를 줄이는 방법에는 가로로 접는 방법, 세로로 접는 방법등이 있습니다. 그와 같은 이치지요..

그렇기에 압축방식별로 장점과 단점이 있습니다.

  • # gzip [옵션] [파일명]

가장 많이 사용되는 압축입니다.

CPU가 많이 사용되지않은 반면에 압축률은 높습니다.

그리고 파일한개만 압축할 수 있어 대체로 tar명령(파일묶음)과 함께 사용됩니다.

"gz"라는 확장자를 가진 압축된 파일이 생성됩니다. 예) file1.gz

기본적으로 압축또는 해제한 후 원본파일은 자동삭제됩니다.

 

[옵션]

-[압축레벨] : 압축률과 속도를 선택할 수 있습니다. [압축레벨]에는 1 ~ 9 사이의 숫자가 들어가며, 숫자가 클수록 압축률은 높아지지만, 압축속도는 느려집니다. ex. "# gzip -1"   --->압축속도는 빠르지만, 압축률은 최저입니다.

-c : 원본파일을 자동삭제하지않습니다.

-d : 압축을 해제합니다. (별도로 "# gunzp [옵션] [파일명]" 명령어로도 압축을 해제할 수 있습니다.)

-l : 압축파일 정보를 표시합니다.

-r : [파일명]에 디렉토리(폴더)를 지정시 해당 디렉토리에 있는 모든파일을 각각 압축합니다. 묶음압축이 아니라 각각 압축입니다.

-v : 압축 과정 또는 해제과정을 자세하게 보여줍니다.

 

[파일명]

압축할 파일또는 해제할 압축파일을 입력합니다.

  • # bzip2 [옵션] [파일명]

CPU사용률은 높지만, 최고의 압축률을 제공합니다.

그리고 파일한개만 압축할 수 있어 대체로 tar명령(파일묶음)과 함께 사용됩니다.

"bz2"라는 확장자를 가진 압축된 파일이 생성됩니다. 예) file1.bz2

기본적으로 압축또는 해제한 후 원본파일은 자동삭제됩니다.

 

[옵션]

-z : 압축합니다.

-d : 압축을 해제합니다. (별도로 "# bunzip2 [옵션] [파일명]" 명령어로도 압축을 해제할 수 있습니다.)

-k : 원본파일을 자동삭제하지않습니다.

-v : 압축 과정 또는 해제과정을 자세하게 보여줍니다.

-s : 작업시 메모리를 적게 사용합니다. (단, 작업시간이 늦어집니다.)

-f : 같은 파일이 있을 경우 덮어쓰기합니다.

 

[파일명]

압축할 파일또는 해제할 압축파일을 입력합니다.

  • # zip [옵션] [파일명] [대상파일명]

bzip2, gzip보다 압축레벨이 낮지만, 거의 모든 OS에서 호환 됩니다.

파일여러개를 묶어 압축할 수 있습니다.

압축암호를 설정할 수 있습니다.

압축해제시 "# unzip [파일명]"명령으로 해제합니다.

사용예)  # zip -p 1234 –r conory.zip /home/conory   ---> /home/conory폴더를 "1234"라고 암호를 설정해서 conory.zip파일로 압축합니다.

 

[옵션]

-r : 하위 디렉토리(폴더)까지 모두 포함하여 압축합니다.

-p [암호] : 압축암호를 설정합니다.

 

[파일명]

입력한 파일명으로 압축파일을 생성합니다.

(생성할때 zip파일을 구분하기위해 파일명에 확장자(zip)를 꼭 붙여서 입력하세요. ex. conory.zip)

 

[대상파일명]

압축할 파일이나 디렉토리(폴더)를 입력합니다. ex. /home/conory/*  ---> conory폴더 안에 있는 파일들을 압축합니다.

 

 

*실습

위에서 소개되어 있는 명령어를 조합해 간편한 압축을 하고 풀어봅시다.

  • tar czvf conory.tar.gz /home/conory : 압축할때

/home/conory 디렉토리를 묶은 후 gzip으로 압축합니다.

결과파일 : conory.tar.gz

  • tar xzvf conory.tar.gz : 압축풀때

conory.tar.gz압축파일을 풉니다.

결과 디렉토리 : conory

 - 디렉토리란? 윈도우에서 폴더와 같은 것입니다. 단지, 리눅스에서 부를때 이름만 "디렉토리"로 다르게 부릅니다.

 

1.png

 

직접해보는 것이 실력향상에 도움이 됩니다.

이전까지 제글을 보신 분이라면 충분히 이해할 수 있습니다.

Atachment
첨부 1
?