본문 바로가기

컴퓨터 기본/Linux

[Linux] 파일 아카이브(archive), 파일 압축하고 해제하기

아카이브 vs 압축

  • 아카이브(archive) = 여러 파일 혹은 디렉토리를 모아서 파일1개로 만들기
  • 압축: 파일 크기를 작게 만들기
window, macOS => 아카이브와 압축이 구분되지 않음. 같이 수행됨. 주로 zip 을 사용
linux => 아카이브와 압축을 구분함. 아카이브는 tar, 압축은 gzip, bzip2 등을 사용

 

Tar

파일의 권한, 소유자, timestamp 등 속성을 유지하면서 파일을 한데 묶는다. 이것이 cp 명령어와 다른데, cp는 파일 단순복사이기 때문이다. 속성까지 복사하기 때문에, 만약 권한이 없는 파일을 아카이빙한다면 아카이브 해제시 속성이 올바로 복원되지 않는다.

Tar 명령으로 권한이 없는 파일까지 아카이브 시에는 권한을 부여받거나 root 사용자로 실행해야한다.

 

옵션 내용
c (create) 새로운 아카이브 생성
d (diff) 아카이브에 있는 파일과 비교
f (file) 아카이브 생성시 파일명 지정
혹은 아카이브 해제시 디렉토리명 지정
r (append) 아카에브에 지정한 파일 추가
t (list) 아카이브 목록 출력
x (extract) 지정한 파일은 아카이브에서 제외
v (verbose) 처리과정 화면에 출력

 

원래 tar 명령으로는, window 처럼 파일을 모아 zip으로 만들 수 없었다. 기존에는 여러 파일을 압축시 tar 명령으로 아카이브 파일을 생성한 뒤 gzip 명령으로 아카이브 명령으로 파일을 압축했다. 압축명령이 포함된 지금은 tar로 바로 압축파일을 생성할 수 있다.

옵션 내용
J .xz 파일로 압축
z .gzip 파일로 압축
Z .compress 파일로 압축

 

tar [옵션] [파일명] 과 같이 명령을 내린다. 옵션 앞에 - 를 붙여도 되고, 안붙여도 된다. 일반적으로 - 없이 알파벳만 붙인다.

 

ex)

tar tvf ./xxx.tgz: 아카이브에서 모든 파일목록 출력

tar xf ./xxx.tgz: 아카이브에서 모든 파일 추출

tar tvf ./xxx.tgz | grep "scouter.conf": 아카이브에서 목록을 출력하되 scouter.conf 파일이 있는지 확인하기

tar cf xxx.tar.gz dir01

tar czf xxx.tar.gz test01: test01 경로에 있는 파일을 xxx.tar.gz 라는 이름으로 아카이브+압축하기

 

 

파일 압축 및 해제

확장자 압축 해제  비고
.Z compress uncompress 압축률 낮다
.gz gzip gunzip 일반적인 경우에 많이 사용되는 명령
.bz2 bzip2 bunzip2
.xz xz unxz 압축률 높다

 

compress

옵션 내용
-d (decompress) 파일 압축 해제
-c .Z 외 확장자를 지정해 압축
-v (verbose) 압축과정 화면에 표시(view)
-V compress 명령어 Version 정보

 

gzip

옵션 내용
-d (decompress) 파일 압축 해제
-l (list) 압축된 파일 목록 출력
-v (verbose) 압축과정 표시
-1 빠른 압축(대신 덜 압축)
-9 느린 압축(대신 더 압축)

 

ex) compTest01.txt 압축하고 해제하기

 

ex) compTest01.txt 압축시 압축률 확인하고, 압축된 파일 목록 확인하기

 

xz

옵션 내용
-z 강한 파일 압축
-d (decompress) 강한 파일 압축 해제
-l .xz 파일의 정보 출력
-v (verbose) 압축과정 표시