파일 아카이브와 압축
on Linux
파일 아카이빙이란 여러개의 파일이나 디렉터리들을 하나로 묶는 것이다.
이런 아카이브 파일들은 원격지나 다른 시스템으로 여러 파일을 한번에 전송하거나 파일을 백업해놓기 위해 사용하는데, 압축은 하지 않고 여러개를 묶기만 하기 때문에 크기 자체는 변하지 않는다.
그렇기 때문에 일반적으로 압축 명령어와 같이 사용하는 편이다.
아래는 대표적인 아카이브 명령어인 tar 의 옵션들이다.
옵션 | 설명 |
---|---|
c | 여러 파일들을 아카이브하여 tar 파일 생성 |
x | 아카이브된 tar 파일을 풀어 원본 파일들로 복원 |
r | 아카이브된 파일의 끝에 다른 파일을 추가 |
t | 아카이브된 파일들의 목록만 확인, 아카이브 풀지 않음 |
v | verbose, 처리하는 파일 정보들을 화면에 출력 |
f | 아카이브 파일명 지정 |
z | gzip 을 사용하여 압축하거나 해제 |
j | bzip2 을 사용하여 압축하거나 해제 |
J | xz 를 사용하여 압축하거나 해제 |
P | 절대경로에 대한 정보를 유지 |
이외에도 –exclude 와 같은 롱옵션을 사용해서 특정 디렉토리를 제외하고 아카이브 할 수도 있다.
daily-ps 라는 디렉토리 안의 모든 내용들을 gzip 방식을 활용하여 압축하고 싶은 경우 :
tar -czvf daily-ps.tar.gz daily-ps
위에서 생성한 tar 파일을 다시 복원 :
tar -xzvf daily-ps.tar.gz
daily-ps 디렉토리를 xz로 압축, 출력 과정은 생략 :
tar -Jcf test.tar.xz daily-ps
test.tar로 아카이브된 파일들 목록 확인 :
tar -tvf test.tar
위에서 gzip, bzip2, xz 등의 압축 방식이 언급되었는데, 이런 압축 명령어들은 아카이빙과 같이 써야 하는 것은 아니다.
확장자 | 압축 | 해제 |
---|---|---|
Z | compress | uncompress |
gz | gzip | gunzip |
bz | bzip2 | bunzip2 |
xz | xz | unxz |
압축률이 낮은 순서부터 작성했기 때문에, gzip이 가장 압축률이 낮고 xz 가 가장 높다.
bconfiden2@h01:~$ gzip NAVER.html
bconfiden2@h01:~$ bzip2 NAVER.html
bconfiden2@h01:~$ xz NAVER.html
bconfiden2@h01:~$ ll | grep NAVER | awk '{print $5"\t"$9}'
37565 NAVER.html.bz2
37579 NAVER.html.gz
33824 NAVER.html.xz
크게 차이 나지는 않지만 암튼 그렇다.
기존에는 tar와 gz를 같이 사용해왔고, 인터넷에서 이런 식으로 압축된 파일들을 다운로드 받을 일도 종종 있다(tar.gz 혹은 tgz).
그러나 최근에는 페이스북에서 개발한 zstd 가 엄청난 압축 성능을 보여 인기를 얻고 있다.
윈도우 데스크탑과 쉽게 호환시키려면 zip을 사용할 수도 있다.