동명의 영화에 대한 내용은 TAR 타르 문서 참고하십시오.
동명의 화학 물질에 대한 내용은 타르 문서 참고하십시오.
1. 개요
아카이브 파일. 아카이브란 여러 파일과 디렉터리를 하나로 묶는 것을 말한다. 한국에선 아카이브란 말은 거의 쓰지 않기 때문에 압축 파일로 불린다. ZIP과 같은 파일을 그냥 압축파일로 부른다는 점에 알 수 있듯이, 한국어에서 아카이브와 압축을 동시에 진행하는 파일은 그냥 압축 파일이라고 부르기 때문. 하지만 엄밀히 따지면, 압축은 파일과 디렉터리를 하나로 묶는 것보다, 용량을 줄이는 것에 방점이 찍힌 표현이기 때문에 TAR는 압축 파일이 아니다.2. 상세
각 파일의 정보를 담아야 하기 때문에 용량이 오히려 소폭 늘어난다. 과거 자기테이프를 기억 매체로 사용하던 시절[1] 데이터 관리를 보다 효율적으로 하기 위해 만들어졌다. 파일을 하나로 묶는 역할만 하는지라 처리 속도가 빠르다. 유닉스 계열 운영체제에서 주로 쓰인다.tar는 단순히 묶는 역할만 하므로 압축이 필요한 경우 tar 파일을 다른 압축 유틸리티를 통해 압축한다. 이 경우 뒤에 확장자가 더 따라붙는다. gzip을 이용하면 tar.gz, bzip2를 이용하면 tar.bz 하는 식. tgz, tbz 등 아예 합쳐진 확장자로도 많이 쓰인다. 간혹 압축한 파일을 tar로 지정해서 받는 쪽에서 뭘로 풀어야 할 지 몰라 환장하게 만드는 경우도 있다(...).[2]
타르볼의 장점은 다른 압축 파일들이 가질 수 없는 기능인 파일의 특성을 같이 저장 할 수 있다는 점인데, 예를 들어 CMS 구축 파일이 zip 파일과 tar.bz로 제공될 때 zip, 7z파일은 바이너리 파일이나 폴더 권한 설정을 수동으로 (.htaccess 포함)해주어야 하지만, tar의 경우는 권한 설정 등이 tar 안에 저장되어 있기 때문에 귀찮은 작업이 사라진다는 장점이 있다.
3. 다른 OS와의 관계
윈도우에서는 잘 쓰이지 않는 파일 형식이다. 윈도우의 전신이 된 DOS에는 tar 같은 파일을 한데 묶어 주는 기능이 없었다. 사실 tar라는 기능은 유닉스가 메인프레임 같은 중대형 컴퓨터용이었고, 대량의 데이터를 다루는 일이 많다 보니 생긴 것이다. 그러나 DOS는 PC용 OS였고, 초창기 PC는 대량의 데이터를 다루는 일이 없다 보니 해당 기능을 채용하지 않은 것이다. 따라서 DOS용 파일 압축 프로그램들은 여러 파일의 압축을 시도하면 파일을 합쳐 주는 기능까지 같이 넣는 것이 일반적이었고, 이것은 윈도우 시대까지 그대로 이어졌다. 그러다 보니 tar는 윈도우에서는 거의 쓰이지 않는 포맷이 되었고, 윈도우용 tar 유틸리티도 나와 있지만 굳이 설치해서 쓰는 사람은 드물다. 때문에 유닉스/리눅스와 전혀 인연이 없는 사람에게 tar 파일을 보내면 뭥미 소리가 나오니 주의. 그나마 2010년대 이후에 나오는 윈도우용 압축 프로그램은 tar 압축 해제를 대부분 지원한다. 다만 tar의 강점인 퍼미션 보존만은 지원하지 않으니 주의.그 반대도 마찬가지. 윈도우는 tar를 지원하지 않는 대신 OS 차원에서 ZIP 파일의 압축 및 해제를 지원하는데, 이 파일을 리눅스 등의 유닉스 계열 OS로 보내면 비슷한 문제가 생긴다. 물론 이 경우에는 ZIP 압축 해제를 지원하는 unzip 패키지를 설치해서 풀면 된다. RAR 등의 다른 윈도우에서 많이 사용되는 압축 프로그램도 마찬가지다. 물론 이 때도 마찬가지로 퍼미션 보존은 기대하지 말자.[3]
macOS에서는 잘 지원한다. macOS의 전신이 유닉스 계열 OS인 BSD이기 때문이다. 사용 방법도 같다.
4. 사용법
유닉스 계열 운영체제에 기본적으로 포함되어 있는 tar 압축 명령어는 보통 다음과 같은 옵션을 가진다. GNU tar를 기준으로 설명한다. FreeBSD나 OS X 등 BSD 계열의 경우도 대동소이하지만 미묘하게 다른 경우가 있으니 주의.- -f : 테이프 대신 파일을 묶는다. 원래 테이프를 다루는 프로그램이었기 때문에 생긴 흔적이다. 파일을 묶거나 풀려면 반드시 붙여줘야 한다. 이 옵션을 사용하지 않으면 압축된 바이너리가 터미널에 그대로 출력된다.
- 역할 옵션-이 중 하나만 써야 한다.
- -c : 지정한 파일을 tar로 묶는다.
- -x : tar를 압축 해제한다.
- -r : 묶인 tar에 새 파일을 추가한다.
- -t : tar 안에 들어있는 파일을 목록으로 표시한다.
- 부가 옵션-위 기능에 부가기능을 추가한다.
- -v : 압축 및 해제 과정을 상세한 메시지로 출력한다.
- -p : UID를 보존한다. 사실상 퍼미션 보존과 같은 말이다. 풀 시스템 백업에서 타르볼이 사용되는 이유이자 타르볼의 꽃.
- 압축 옵션-파일을 작업할 때 사용할 압축 형식을 지정한다. 당연히 이 중 하나만 사용 가능.
- -z : 묶은 tar를 gzip으로 압축하거나, -x인 경우 해당 파일이 이미 gzip 압축되었음을 가리킨다.[4]
- -j : 묶은 tar를 bzip2로 압축하거나 bzip2 압축된 타르볼을 한 번에 압축 해제한다.
- -J : 묶은 tar를 xz로 압축하거나 xz 압축된 타르볼을 한 번에 압축 해제한다.
[1] 지금도 저장 용량이 엑사~페타급을 바라보는 초대형 서버에서는 백업용으로 자기테이프를 사용한다.[2] 다만 매직 넘버가 다 있기 때문에 사용자 입장이 아닌 컴퓨터 입장에서는 별 문제가 안 된다. tar.7z(7z 자체가 아카이빙을 지원하므로 뻘짓) 같은 괴악한 포맷으로 보낸 게 아닌 한 tar 명령어 자체가 파일의 매직 넘버를 인식해 알아서 압축을 풀어 주며, 괴악한 포맷이거나 사용하는 프로그램이 자동 인식이 불가능한 경우 file 명령어로 어떤 포맷으로 압축됐는지 식별하면 'tar -xjf'(이 경우는 bzip2) 같이 플래그를 걸어서 압축을 풀거나 'zcat 파일명 | tar -xf -'(이 경우는 gzip) 같이 파이프로 압축 해제-아카이브 해제 순서대로 걸어 주면 된다.[3] 애초에 NTFS와 POSIX는 퍼미션 체계가 다르다. 호환이 안 된다. ntfs-3g 드라이버에서 괜히 기저 퍼미션을 무시하고 올 퍼미션 777을 상정하는 게 아니다.[4] 자신이 한 프로그램은 하나의 역할만 해야 한다는 유닉스 강경파라면, 혹은 사용하는 프로그램이 이 플래그를 지원 안 한다면 압축은 'tar -cf - (...)|gzip > (파일명)'으로, 해제는 'zcat (파일명) | tar -xf -'로 대체 가능.