🚀 94sssh
Published on

2025.11.14

[모두의 리눅스] - 18. 아카이브와 압축

18.1. 아카이브와 압축

아카이브: 여러 개의 파일이나 디렉터리를 모아 파일 하나로 만드는 것

윈도와 macOS의 zip은 아카이브와 압축을 동시에 실행하고, 리눅스에서는 아카이브와 압축을 구분해 다룸.

  • 아카이브: tar
  • 압축: gzip, bzip2

18.2. tar 명령어: 파일 아카이브하기

tar는 아카이브 명령어로, 복수의 파일이나 디렉터리를 아카이브 파일로 모으거나 복원할 때 사용.

tar cf <아카이브 파일 이름> <아카이브로 묶을 파일 경로>로 아카이브를 만들 수 있고, tar xf ...로 복원할 수 있다. 아카이브 해제 위치에 동일한 이름의 파일이 있으면 덮어쓰므로 주의한다.

옵션의미
c새 아카이브 생성
f새 아카이브 이름 지정
t아카이브 파일 내용 확인
x아카이브 복원
v대상 파일의 목록 출력
z압축(gzip 기능)
j압축(bzip2 기능)
J압축(xz 기능)

tar는 기존의 권한, 속성 등을 유지한 채로 아카이브하는데, 권한이 부족하면 속성을 유지하지 못할 수 있으므로 슈퍼 사용자 권한으로 실행.

  • 괄호 확장 {<시작 숫자>..<끝 숫자>}

18.3. gzip 명령어: 파일 압축하기

gzip은 파일 압축/해제 명령어로 .gz 확장자를 붙임.

gzip <압축할 파일>로 압축하고 -d 옵션을 지정해 복원할 수 있음. 압축 해제시 압축 파일은 삭제되며 해제된 파일만 남는다. gunzip 명령어는 셸 스크립트로 gzip -d를 수행하므로 동일하게 동작한다.

gzip은 파일을 하나만 압축할 수 있는데, tar로 파일 여러 개를 아카이브한 뒤 gzip을 사용해 여러 개를 묶어 압축할 수 있음. 이런 경우 tar.gz.tgz의 확장자가 붙음.

최근 tar는 gzip의 기능을 포함해 각각 사용하지 않아도 tar에 z옵션을 사용해 압축까지 수행할 수 있음.

$ tar czf dir1.tar.gz dir1 # z옵션으로 압축
$ tar xzf dir1.tar.gz # x, z옵션으로 복원

기능을 지원하기 이전에는 파이프를 통해 기능을 연결하여 사용

$ tar cf - dir1 | gzip -c > dir1.tar.gz

# 혹은 임시파일을 만들어 사용
$ tar cf dir1.tar dir1
$ gzip dir1.tar #임시 파일 용량이 필요한 단점 존재

# 복원
$ gzip -d-c dir1.tar.gz | tar xf -

18.4. bzip2 명령어: 파일 압축하기

bzip2도 파일 압축/해제 명령어로 gzip보다 압축률이 높음. gzip과 동일한 옵션으로 동작한다.

최근 tarj 옵션으로 기능을 사용할 수 있음.

xz

bzip2보다 압축률이 좋은 xz명령어도 있으며, 동일한 방식으로 동작하고, tar에서는 J로 사용할 수 있음.

xz는 시간이 오래 걸리는 만큼 압축률이 높음. 리눅스 커널은 xz형식으로 압축 및 배포.

18.5. zip 명령어: 파일 아카이브와 압축하기

ziptargzip과 달리 아카이브와 압축을 동시에 수행하는 명령어.

리눅스에서는 zipunzip을 설치해야 함.

zip -r <압축 파일 이름> <압축 대상 경로>
-r은 지정한 디렉터리 하위 모든 파일을 포함하는 옵션으로, 늘 지정한다고 생각하고 사용하면 된다.

명령어/옵션의미
-r지정한 디렉터리 하위 모든 파일을 포함
zipinfo압축된 zip 파일 확인
unzipzip 파일 복원
-q대상 파일 이름을 출력하지 않고 zip 파일 생성
-e암호 지정