#####1. ZIP
zip 파일은 무손실 압축 포맷이다.(사실 범용 파일 압축 방법중에 무손실 아닌게 있나?)
가장 범용적으로 사용되는 압축 포맷이며, 안드로이드의 *.apk
나 자바의 *.jar
등 사실 ZIP 포맷 이다.
C++ 에서는 쉽게 zip 라이브러리를 구할 수 있다.
http://www.codeproject.com/Articles/7530/Zip-Utils-clean-elegant-simple-C-Win
https://drive.google.com/open?id=0B9hvQueMdS-2MnhwWlFUdTg0Wms
위 링크에서 다운로드 받을 수 있다.
zip.h
, zip.cpp
, unzip.h
, unzip.cpp
4개의 파일이 필요하며, 아래는 사용 예시이다.
#include<iostream>
#include<Windows.h>
#include"unzip.h"
#include"zip.h"
int main() {
HZIP zip = CreateZip(L"out.zip", 0);
ZipAdd(zip, L"_hello.txt", L"hello.txt");
ZipAdd(zip, L"_world.txt", L"world.txt");
CloseZip(zip);
HZIP unzip = OpenZip(L"out.zip", 0);
ZIPENTRY ze;
GetZipItem(unzip, -1, &ze);
for (int i = 0; i < ze.index; i++) {
ZIPENTRY ze;
GetZipItem(unzip, i, &ze);
UnzipItem(unzip, i, ze.name);
}
CloseZip(unzip);
return 0;
}
#####2. tar
tar
는 압축 포맷이라고 하긴 좀 뭐시기 하다..
tar
는 압축을 하지 않으며 파일을 하나로 묶을때 사용한다.
주로 리눅스에서 사용하며, 추가로 압축하는경우 뒤에 추가 확장자가 붙는다.
######tar 압축
tar cvf <압축 파일> <묶을 디렉토리or파일>
######tar 압축 해제
tar xvf <압축 파일>
######2-1. tar.gz
gzip
은 하나의 파일만 하나의 압축파일로 만들 수 있다. 따라서 tar
와 같이 사용되며 확장자는 tar.gz
이다.
일반적으로 tar.gz
는 zip
보다 압축률이 좋다.
######tar.gz 압축
tar -czvf <압축 파일> <압축할 디렉토리or파일>
######tar.gz 압축 해제
tar -xzvf <압축해제할 파일>
######2-2. tar.bz2
gzip
과 마찬가지로 파일 하나만 압축하며, 압축률은 더 높다. 다만 시간이 오래 걸린다.
주로 이 두가지를 사용하는 것을 추천한다.
절대 egg 같은 포맷은 사용하지 말자.