[Linux] 7. 아카이브 및 압축
(Week 2 - Day 4) - (2/2)
압축 & 아카이브
여러 파일을 하나로 합치는 것(concat)
(A, B, C파일을 X라는 하나의 파일로 생성 ⇒ 1m1m1m → 3m)
압축은 파일을 읽고 자주반복되는 구문을 찾아 줄인다.
(기본적 원리 ABC → X ⇒ X=ABC 풀때 X → ABC)
tar는 아카이브
zip은 압출(gzip, bzip2, xz)
Tar
- tape archive
- tape는 아직도 사용한다.
- 백업에 많이 사용된다.
- 서버에 백업용으로 LTO를 사용하고 단가가 엄청나게 저렴하다.
- Tape은 매우 느리지만 이동이 쉽고 보관이 용이하다.
dd if=/dev/zero of=file1 count=1 bs=1M
# ( if => inout / of=> output / bs=>block size )
tar -f
tar cf files.tar file1 file2 file3
unix는 확장자라는 개념이 없이 모두 파일명이이다.
tar tf files.tar
tar 파일 안에 어떤게 있는지 확인
tar vcf files.tar
f가 가장 마지막에 있어야 파일 명을 붙일 수 있다.
v로 어떤 파일이 아카이빙 되는지 볼 수 있다.
gzip
gzip files.tar
자동으로 파일명에 .gz가 붙고 원본 파일을 지워버린다.
gzip -d files.tar.gz
gunzip files.tar.gz
- 압축 풀기
bzip2
bzip2 files.tar
gzip보다 압축률을 높였다.
bzip2 -d files.tar.bz2
bunzip2 files.tar.bz2
- 압축 풀기
xz
xz files.tar
일반적으로 xz가 압축률이 가장 좋다.
하지만 압축률이 좋다는 것은 시간이 오래 걸린다는 뜻이기도 하다.
xz -d files.tar.xz
unxz files.tar.xz
- 압축 풀기
실습
실습명 : etc 디렉토리 전체를 gzip, bzip2, xz 3개 파일로 압축하고 용량 비교
방법 :
#(파일 생성)
tar cf etc.tar /etc
cp etc.tar etc1.tar
cp etc.tar etc2.tar
#(압축)
gzip etc.tar
bzip2 etc1.tar
xz etc2.tar
#(확인)
ls -lh
결과 :
-rw-rw-r--. 1 vagrant vagrant 2.9M Jul 21 06:45 etc1.tar.bz2
-rw-rw-r--. 1 vagrant vagrant 2.4M Jul 21 06:45 etc2.tar.xz
-rw-rw-r--. 1 vagrant vagrant 3.6M Jul 21 06:44 etc.tar.gz
결론 :
용량에 큰 차이는 없지만 체감 속도 차이는 심하다.
정리 :
아카이브를 만드는 것도 중요하지만 해제하는 것도 중요하다.
실전 압축
Curl
- cli url : 소스코드를 확인할 수 있다.
#Curl 사용
curl www.google.com
#파일 다운
curl -O [URL]

GUI의 브라우저는 302 코드로 인해 Location으로 리다이렉션한다.
하지만 현재 옵션의 curl은 CLI는 이러한 기능을 지원하지 않기 때문에
Location 필드를 복사해주고 다시 curl을 실행해야 한다.
curl의 -I 옵션으로 헤더를 볼 수 있다.
!! 간단한 방법
curl -OL [URL]
Zip
대부분의 리눅스는 zip에 대한 프로그램이 없기에 따로 설치를 해야한다.
sudo yum install zip #압축
sudo yum install unzip #압출풀기
zip 압축 - (Normal)
zip [파일명].zip [파일]/*
zip 압축 - (Easy)
# gzip
tar czf etc.tar.gz /etc
# bzip2
tar cjf etc.tar.bz2 /etc
# xz
tar cJf etc.tar.xz /etc
#오류 제거
tar cJf etc.tar.xz /etc 2> /dev/null