[Linux] Linux 압축 & Archive
<Archive & 압축>
1. Archive
: Backup이나 압축을 위해서 여러개의 파일이나 디렉토리를 하나의 파일로 만드는 작업
- 예전 Tape Drive 시절 여러 곳에 혼재하는 파일이나 디렉토리를 한 파일로 관리하기 위해 만들어졌습니다
<명령어>
[tar] (Tape Archive)
* 옵션
-c : Archive 파일 생성 (필수옵션)
-x : Archive 파일 해제 (필수옵션)
-v : 작업 진행 과정 확인 (View, 공통 옵션) (필수옵션 x)
-f : 파일이름 지정 (필수옵션)
-t : 해제하지 않고 아카이브 파일 확인
-r : 기존 아카이브 파일에 파일 추가
-u : 기존 아카이브 파일에 업그레이드 된 파일 추가
-C : 아카이브 다른 경로에 해제
ex) # tar -cvf 아카이브파일이름 파일명1 파일명2 파일명3 ..... (아카이브 생성)
# tar -xvf 아카이브파일이름 (아카이브 해제)
# tar -xvf 아카이브파일이름 -C 경로지정 (다른경로에 해제)
<옵션 이용해 명령어 사용해보기>
*tar 명령어는 유닉스에서도 동일하기 때문에 옵션을 쓸 때 - 기호 생략 가능
- /1/2/3/1/2/3 디렉토리를 만들어주고 /1/2/3 으로 이동합니다
- 압축 할 파일 3개를 만들어줍니다 (a.txt, b.txt, c.txt)
- tar 명령어와 아카이브 생성 옵션(c), 파일 이름 지정 옵션(f)를 통해 ab.tar 파일을 만들어봅니다
- v 옵션을 쓰면 만들어진 결과물을 볼 수 있습니다
- 압축을 해제하기 전 같은 이름의 파일이 있으면 헷갈릴 수 있으니 먼저 a.txt와 b.txt 파일을 삭제해주고 -x 옵션을 사용해서 ab.tar 파일을 해제해봅니다
- -C 옵션을 사용하여 아카이브 파일을 다른 경로에 지정해서 해제해봅니다
- -t 옵션을 사용하여 아카이브 파일을 해제하지 않고 내용물을 확인해봅니다
- -r 옵션을 사용하여 기존 아카이브 파일에 새로운 파일을 추가해봅니다
- cat >> 명령어로 기존의 파일의 내용을 수정한 후 업데이트 된 파일을 기존 아카이브 파일에 추가해봅니다
- 이 때 업데이트 된 파일이 아카이브 파일에 들어있던 기존 파일을 덮어쓰게 됩니다
- 확인을 위해 상위 디렉토리에 아카이브 파일을 해제해봅니다
- 해제할 때에는 두개의 c.txt 파일이 해제된 것 처럼 보이지만 상위 디렉토리의 내용을 확인해보면 가장 최신의 파일만 해제되어있습니다
- tar --delete --file=ab.tar a.txt 명령어를 이용해 아카이브 파일 안의 파일을 삭제해 봅니다
- 업데이트된 파일을 지운다면 두버전의 파일 모두가 삭제됩니다
2. 압축
- 종류
[zip] (설치필요)
# yum install -y aip unzip
# zip 파일명.zip 파일명1 파일명2 파일명3 ...
(해제)
# unzip 파일명.zip
<명령어 사용해보기>
- zip 명령어를 통해 a.txt, b.txt, c.txt를 압축해줍니다
- 헷갈림을 방지하기 위해 .txt 파일을 모두 삭제해준 뒤 unzip 명령어를 이용해 압축을 해제해봅니다
[gzip] (내장되어있으니 설치필요 x)
# gzip 파일명 : gzip ab.tar -> ab.tar.gz
# gzip -1~9 (숫자가 클 수록 압축률이 높다, 속도는 느림) 파일명
(해제)
# gunzip 파일명.gz
# gzip -d 파일명.gz
<명령어 사용해보기>
- gzip은 파일을 여러개를 집어넣을 수 없기 때문에 tar 명령어로 아카이브 파일로 만든 후 압축을 진행해야합니다
- gunzip을 통해 gzip 압축 파일을 해제해봅니다
- -d 옵션을 사용하여 삭제할 수도 있습니다
[bzip2] (설치필요)
# yum install -y bzip2
# bzip2 파일명 : bzip2 ab.tar -> ab.tar.bz2
# bzip2 -1~9 (숫자가 클 수록 압축률이 높다, 속도는 느림) 파일명
(해제)
# bunzip2 파일명.bz2
# bzip2 -d 파일명.bz2
<명령어 사용해보기>
- bzip2도 파일을 여러개 넣을 수 없기 때문에 아카이브 파일을 압축합니다
- bunzip2 명령어를 이용하여 압축을 해제해봅니다
[xz]
# xz 파일명
# xz -1~9 (숫자가 클 수록 압축률이 높다, 속도는 느림) 파일명
(해제)
# unxz 파일명.xz
# xz -d 파일명.xz
<옵션 이용해 명령어 사용해보기>
- xz도 파일을 여러개 넣을 수 없기 때문에 아카이브 파일을 압축합니다
- unxz 명령어를 사용해 압축을 풀어봅니다
- -d 옵션을 사용해 삭제할 수도 있습니다
3. Archive + 압축
tar cvf를 공통적으로 사용하고 뒤에 붙는 옵션에 따라 확장자가 다르게 만들어집니다
- -z : gz 확장자 # tar cvfz abc.tar.gz a.txt b.txt c.txt
- -j : bz2 확장자 # tar cvfj abc.tar.bz2 a.txt b.txt c.txt
- -J : xz 확장자 # tar cvfJ abc.tar.xz a.txt b.txt c.txt
※ 옵션과 확장자를 틀리게 해도 파일은 생성됨. 단 압축 및 아카이브 해제 시 STDIN Error
* 확장명과 다른 옵션 입력해서 압축 및 아카이브 해제 가능