[Computer] zip,tar,rar등 압축 파일종류에 대해...

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.gzzip보다 압축률이 좋다.

tar.gz 압축
tar -czvf <압축 파일> <압축할 디렉토리or파일>
tar.gz 압축 해제
tar -xzvf <압축해제할 파일>
2-2. tar.bz2

gzip과 마찬가지로 파일 하나만 압축하며, 압축률은 더 높다. 다만 시간이 오래 걸린다.


주로 이 두가지를 사용하는 것을 추천한다.

절대 egg 같은 포맷은 사용하지 말자.