최근 수정 시각 : 2025-02-17 21:59:16

TAR

타르볼에서 넘어옴

파일:다른 뜻 아이콘.svg  
,
,
,
,
,
,
,
,
,
은(는) 여기로 연결됩니다.
다른 뜻에 대한 내용은 아래 문서를
동명의 화학 물질에 대한 내용은 타르 문서
번 문단을
부분을
, 동명의 영화에 대한 내용은 TAR 타르 문서
번 문단을
부분을
, 에 대한 내용은 문서
번 문단을
부분을
, 에 대한 내용은 문서
번 문단을
부분을
, 에 대한 내용은 문서
번 문단을
부분을
, 에 대한 내용은 문서
번 문단을
부분을
, 에 대한 내용은 문서
번 문단을
부분을
, 에 대한 내용은 문서
번 문단을
부분을
, 에 대한 내용은 문서
번 문단을
부분을
, 에 대한 내용은 문서
번 문단을
부분을
다른 뜻에 대한 내용은 아래 문서를
참고하십시오.

*
동명의 화학 물질:
타르
문서의 번 문단
문서의 부분
*
동명의 영화:
TAR 타르
문서의 번 문단
문서의 부분
*
:
문서의 번 문단
문서의 부분
*
:
문서의 번 문단
문서의 부분
*
:
문서의 번 문단
문서의 부분
*
:
문서의 번 문단
문서의 부분
*
:
문서의 번 문단
문서의 부분
*
:
문서의 번 문단
문서의 부분
*
:
문서의 번 문단
문서의 부분
*
:
문서의 번 문단
문서의 부분

1. 개요2. 표준 및 구현체
2.1. Windows와 호환성
3. 사용법4. 기타

1. 개요

아카이브 파일. 아카이브란 여러 파일과 디렉터리를 하나로 묶는 것을 말한다. 한국에선 아카이브란 말은 거의 쓰지 않기 때문에 압축 파일로 불린다. ZIP과 같은 파일을 그냥 압축파일로 부른다는 점에 알 수 있듯이, 한국어에서 아카이브와 압축을 동시에 진행하는 파일은 그냥 압축 파일이라고 부르기 때문. 하지만 엄밀히 따지면, 압축은 파일과 디렉터리를 하나로 묶는 것보다, 용량을 줄이는 것에 방점이 찍힌 표현이기 때문에 TAR는 압축 파일이 아니다.

tar는 단순히 묶는 역할만 하므로 압축이 필요한 경우 tar 파일을 다른 압축 유틸리티를 통해 압축한다. 이 경우 뒤에 확장자가 더 따라붙는다. gzip을 이용하면 tar.gz, bzip2를 이용하면 tar.bz 하는 식. tgz, tbz 등 아예 합쳐진 확장자로도 많이 쓰인다. 간혹 압축한 파일을 tar로 지정해서 받는 쪽에서 뭘로 풀어야 할 지 몰라 환장하게 만드는 경우도 있다(...).[1]

타르볼의 장점은 다른 압축 파일들이 가질 수 없는 기능인 파일의 특성을 같이 저장 할 수 있다는 점인데, 예를 들어 CMS 구축 파일이 zip 파일과 tar.bz로 제공될 때 zip, 7z파일은 바이너리 파일이나 폴더 권한 설정을 수동으로 (.htaccess 포함)해주어야 하지만, tar의 경우는 권한 설정 등이 tar 안에 저장되어 있기 때문에 귀찮은 작업이 사라진다는 장점이 있다.

2. 표준 및 구현체

UNIX와 역사를 함께하는 동시에 ar, cpio 등 기타 포맷과도 겹치는 역사가 너무 많기에 그 수만큼 다양한 구현체가 존재한다. 포맷 또한 유닉스의 발전에 따라 수 차례 미세하게 바뀌었는데, 정식 POSIX 표준으로 등재된 것은 USTAR과 PAX 정도가 있다. 하지만 POSIX 표준 외에도 GNU tar의 독자적인 확장(GNU Extensions)처럼 개별 구현체 수준에서 사용하는 포맷도 있으니 주의.
  • USTAR(Unix Standard TAR) - POSIX.1-1988에서 처음으로 표준화된 포맷. V7 tar과의 차이로 파일명 제한이 256바이트로 개선되었고, 유저/그룹 정보가 id가 아닌 이름으로 저장되도록 바뀌었다. 특히 type flag가 다양화되었는데, V7에서는 파일명 끝의 /로 디렉토리를 구분했지만 USTAR부터는 flag 5번이 디렉토리를 표시하는 것으로 바뀌었다.# 최대 파일 크기 제약이 8기가바이트이다.
  • PAX(Extended TAR) - 1997년 썬 마이크로시스템즈에서 제안되어 POSIX.1-2001 버전에서 표준화가 이루어졌다. 주요 개선점은 g, x 플래그로 ./PaxHeaders/<파일명> 형식의 헤더를 삽입할 수 있는 것으로, 메타데이터가 flag만 제외하면 일반 파일 항목처럼 표현되기에 8기가바이트를 이상 파일 지원을 제외하면 USTAR과 완전히 호환된다.# path= 등의 헤더로 파일명 뿐만 아니라 링크 타켓, 파일 크기, 소유 유저 및 그룹 정보 등의 길이 제한이 무제한이 되었으며, 덩달아 UTF-8 지원도 추가되었다. USTAR과 달리 초 이하 단위의 시간을 저장할 수 있으며, 대부분의 구현체는 나노세컨드 단위까지 허용한다.[2] 구현체나 배포판에 따라 tar이 아닌 pax 등의 별도 명령어로 지원하기도 한다.

구현체
  • V7 tar
    1979년 UNIX V7에 탑재되며 등장한 최초의 tar구현체. 파일 이름을 담는 구조체가 널 포함 cstring 기준 100바이트이기에 최대 파일 이름 길이 제약이 99글자이다. 현재도 GNU tar등의 현대적 구현체들은 호환성을 위해 --format=v7 등의 옵션으로 해당 포맷을 지원하기도 한다.# #
  • Solaris tar
    Solaris 및 SunOS등 파생 버전에 탑재된 구현체로, V7 tar 다음으로 오래되었다. 오랬동안 USTAR만 지원하다가 이후 BSD tar과 같은 libarchive로 백엔드를 교체하면서 PAX 지원이 가능해졌다.# 자체적인 압축은 지원하지 않는다.# Solaris 7 버전부터는 별도의 pax 명령어도 지원한다.#
  • Schily tar, star
    1982년부터 개발된# 복수 볼륨을 지원하는 독자 포맷 및 구현체. 현재는 거의 쓰이지 않는다.
  • BSD tar
    대부분의 BSD 배포판에 탑재된 구현체로, macOS에 기본적으로 내장된 tar도 이 BSD tar이다. 백엔드로 FreeBSD 프로젝트에서 개발된 libarchive를 사용한다. 사용자 측에서 느끼는 가장 큰 차이점은 BSD 스타일 인터페이스로 -를 사용하지 않는다는 것. 따라서 tar xvf와 같이 쓰는 것이 가능하다. BSD tar이 워낙 유명해서인지 GNU tar등의 구현체도 예외적으로 이런 방식의 옵션을 허용해준다.
  • GNU Project
    {{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px);"
    {{{#!folding [ 펼치기 · 접기 ]
    {{{#!wiki style="margin: -6px -1px -10px;"
    <colbgcolor=#a32d2a><colcolor=#fff> 관련 문서 GNU · 자유 소프트웨어 재단 · 리처드 스톨먼
    소프트웨어 Bash · GIMP · GNOME · GNU Emacs · GNU IceCat · GNU/Linux · GNU Octave · GNU Screen · groff · GRUB · Midnight Commander · nano · R · Texinfo
    <bgcolor=#a32d2a><color#fff> 유틸리티 coreutils(fileutils · textutils · shellutils) · GNU Grep · GnuPG · GNU Tar
    <bgcolor=#a32d2a><color#fff> 개발자 도구 Autotools(autoconf · automake) · binutils(BFD · as · ld · gold · gdb) · GCC · glibc · GNU Make
    라이선스 GNU 일반 공중 사용 허가서 · GNU 약소 일반 공중 사용 허가서 · GNU Affero 일반 공중 사용 허가서
    기타 GNU Unifont
    취소선: 독립한 프로젝트
    }}}}}}}}} ||
    GNU tar
    1987년 개발된 pdtar의 소스를 기반으로 GNU에서 개발을 시작했으며, 현재는 의도적으로 BusyBox를 사용하는 경우를 제외한 거의 대부분의 Linux 배포판들에서 널리 사용된다. 독자적인 tar포맷을 가지고 있는데, old gnu 포맷과 1.13.25버전 이후로 채택된 gnu 버전으로 나뉘며 최신 버전은 기본적으로 gnu 포맷을 사용하나, 추후 PAX를 기본 옵션으로 바꿀 가능성도 있다고.# gnu 포맷 자체는 PAX가 등장하기 전 USTAR을 기반으로 한 포맷인데다 PAX와도 호환되지 않기에 BSD 등 다른 운영체제와의 호환성을 생각한다면 PAX등을 대신 사용하는 것이 좋다.[3] 대신 독자 포맷의 경우 incremental backup을 위한 dumpdir플래그나# sparse 멤버 형식# 등을 지원하기에 상황에 따라 PAX보다 나은 선택이 될 수도 있다.
  • BusyBox tar
    BusyBox의 tar 구현체. 모토답게 최소한의 기능만을 구현하기에 -T 등 BSD/GNU tar에 흔히 존재하는 비표준 명령어를 대부분 지원하지 않는다.# # -T 옵션은 1.36.1버전부터 지원된다. 기본적으로 gnu형식을 생성하며, PAX 파일을 읽을 수는 있지만 생성은 지원하지 않는다.

2.1. Windows와 호환성

윈도우에서는 잘 쓰이지 않는 파일 형식이다. 윈도우의 전신이 된 DOS에는 tar 같은 파일을 한데 묶어 주는 기능이 없었다. 사실 tar라는 기능은 유닉스가 메인프레임 같은 중대형 컴퓨터용이었고, 대량의 데이터를 다루는 일이 많다 보니 생긴 것이다. 그러나 DOS는 PC용 OS였고, 초창기 PC는 대량의 데이터를 다루는 일이 없다 보니 해당 기능을 채용하지 않은 것이다. 따라서 DOS용 파일 압축 프로그램들은 여러 파일의 압축을 시도하면 파일을 합쳐 주는 기능까지 같이 넣는 것이 일반적이었고, 이것은 윈도우 시대까지 그대로 이어졌다. 그러다 보니 tar는 윈도우에서는 거의 쓰이지 않는 포맷이 되었고, 윈도우용 tar 유틸리티도 나와 있지만 굳이 설치해서 쓰는 사람은 드물다. 때문에 유닉스/리눅스와 전혀 인연이 없는 사람에게 tar 파일을 보내면 뭥미 소리가 나오니 주의. 그나마 2010년대 이후에 나오는 윈도우용 압축 프로그램은 tar 압축 해제를 대부분 지원한다. 다만 tar의 강점인 퍼미션 보존만은 지원하지 않으니 주의.

그 반대도 마찬가지. 윈도우는 tar를 지원하지 않는 대신 OS 차원에서 ZIP 파일의 압축 및 해제를 지원하는데, 이 파일을 리눅스 등의 유닉스 계열 OS로 보내면 비슷한 문제가 생긴다. 물론 이 경우에는 ZIP 압축 해제를 지원하는 unzip 패키지를 설치해서 풀면 된다. RAR 등의 다른 윈도우에서 많이 사용되는 압축 프로그램도 마찬가지다. 물론 이 때도 마찬가지로 퍼미션 보존은 기대하지 말자.[4]

3. 사용법

유닉스 계열 운영체제에 기본적으로 포함되어 있는 tar 압축 명령어는 보통 다음과 같은 옵션을 가진다. GNU tar를 기준으로 설명한다. FreeBSD나 OS X 등 BSD 계열의 경우도 대동소이하지만 미묘하게 다른 경우가 있으니 주의.
  • -f : 테이프 대신 파일을 묶는다. 원래 테이프를 다루는 프로그램이었기 때문에 생긴 흔적이다. 파일을 묶거나 풀려면 반드시 붙여줘야 한다. 이 옵션을 사용하지 않으면 압축된 바이너리가 터미널에 그대로 출력된다.
  • 역할 옵션-이 중 하나만 써야 한다.
    • -c : 지정한 파일을 tar로 묶는다.
    • -x : tar를 압축 해제한다.
    • -r : 묶인 tar에 새 파일을 추가한다.
    • -t : tar 안에 들어있는 파일을 목록으로 표시한다.
  • 부가 옵션-위 기능에 부가기능을 추가한다.
    • -v : 압축 및 해제 과정을 상세한 메시지로 출력한다.
    • -p : UID를 보존한다. 사실상 퍼미션 보존과 같은 말이다. 풀 시스템 백업에서 타르볼이 사용되는 이유이자 타르볼의 꽃.
  • 압축 옵션-파일을 작업할 때 사용할 압축 형식을 지정한다. 당연히 이 중 하나만 사용 가능.
    • -z : 묶은 tar를 gzip으로 압축하거나, -x인 경우 해당 파일이 이미 gzip 압축되었음을 가리킨다.[5]
    • -j : 묶은 tar를 bzip2로 압축하거나 bzip2 압축된 타르볼을 한 번에 압축 해제한다.
    • -J : 묶은 tar를 xz로 압축하거나 xz 압축된 타르볼을 한 번에 압축 해제한다.
    • 자체 압축과는 별개로 파이프 (|)를 사용해 LZ4, gzip, zstd, xz 등으로 tar 스트림을 압축하는 것도 가능하며 이 방법도 자주 사용되고 해제는 파이프를 반대로 지정하면 된다.
      • 예시
        • 압축 tar -cvf - ./src | lz4 - src.tar.lz4
        • 해제 lz4 src.tar.lz4 - | tar -xvf -

4. 기타

각 파일의 정보를 담아야 하기 때문에 용량이 오히려 소폭 늘어난다. 과거 자기테이프를 기억 매체로 사용하던 시절[6] 데이터 관리를 보다 효율적으로 하기 위해 만들어졌다. 파일을 하나로 묶는 역할만 하는지라 처리 속도가 빠르다. 유닉스 계열 운영체제에서 주로 쓰인다.


파일:CC-white.svg 이 문서의 내용 중 전체 또는 일부는 문서의 r28에서 가져왔습니다. 이전 역사 보러 가기
파일:CC-white.svg 이 문서의 내용 중 전체 또는 일부는 다른 문서에서 가져왔습니다.
[ 펼치기 · 접기 ]
문서의 r28 (이전 역사)
문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

[1] 다만 매직 넘버가 다 있기 때문에 사용자 입장이 아닌 컴퓨터 입장에서는 별 문제가 안 된다. tar.7z(7z 자체가 아카이빙을 지원하므로 뻘짓) 같은 괴악한 포맷으로 보낸 게 아닌 한 tar 명령어 자체가 파일의 매직 넘버를 인식해 알아서 압축을 풀어 주며, 괴악한 포맷이거나 사용하는 프로그램이 자동 인식이 불가능한 경우 file 명령어로 어떤 포맷으로 압축됐는지 식별하면 'tar -xjf'(이 경우는 bzip2) 같이 플래그를 걸어서 압축을 풀거나 'zcat 파일명 | tar -xf -'(이 경우는 gzip) 같이 파이프로 압축 해제-아카이브 해제 순서대로 걸어 주면 된다.[2] Timestamps allow sub-second precision and potentially unlimited length #[3] As a result, GNU tar format is incompatible with the current POSIX specification, and with tar programs that follow it. Making tar Archives More Portable[4] 애초에 NTFSPOSIX는 퍼미션 체계가 다르다. 호환이 안 된다. ntfs-3g 드라이버에서 괜히 기저 퍼미션을 무시하고 올 퍼미션 777을 상정하는 게 아니다.[5] 자신이 한 프로그램은 하나의 역할만 해야 한다는 유닉스 강경파라면, 혹은 사용하는 프로그램이 이 플래그를 지원 안 한다면 압축은 'tar -cf - (...)|gzip > (파일명)'으로, 해제는 'zcat (파일명) | tar -xf -'로 대체 가능.[6] 지금도 저장 용량이 엑사~페타급을 바라보는 초대형 서버에서는 백업용으로 자기테이프를 사용한다.