오늘날 'tar'을 사용하면 어떤 이점이 있습니까?


209

나는 그것이 tar당시의 테이프 아카이브를 위해 만들어 졌음을 알고 있지만 오늘날 우리는 파일을 집계하고 동일한 논리 파일 형식 내에서 압축을 수행하는 아카이브 파일 형식을 가지고 있습니다.

질문 :

  • 동일한 데이터 구조에서 집계 및 압축을 수행하는 파일 형식을 사용할 때 또는 에서 tar캡슐화 를 사용하는 경우 집계 / 압축 / 압축 해제 단계에서 성능이 저하 됩니까? 비교되는 압축기의 런타임이 동일하다고 가정합니다 (예 : gzip 및 Deflate가 유사 함).gzipbzip2

  • 의이 기능입니다 tar같은 다른 파일 형식, 파일 형식 .7z및이 .zip없어요?

  • 때문에 tar이러한 이전 파일 형식 및 새로운 파일 형식을 오늘날, 왜 존재 tar(에 캡슐화 여부 gzip, bzip2또는 새로운 xz파일, 여전히 널리 GNU / 리눅스, 안드로이드, BSD, 및 기타 UNIX 운영 체제에서 오늘날 사용) 전송, 프로그램 소스 및 바이너리 다운로드, 때로는 패키지 관리자 형식?


33
나는 "시간 낭비"에 동의하지 않습니다. 성능을 의미하는 경우 형식이 매우 효율적이므로 tar에 대한 실제 성능 저하가 없습니다. 그것은 낭비 당신이 의미하는 경우에 당신의 시간을, 나는 표시되지 않습니다 tar xvzf보다 더 어렵습니다 7z -x...
allquixotic

41
그는 tar가 시작시 카탈로그를 저장하지 않는다는 사실을 애도하고있는 것 같습니다. 따라서 추출하기 전에 내용을 나열하려는 GUI 압축 도구는 내용을 나열하기 위해 전체 tar를 압축 해제해야하며 추출 할 때 다시 압축 해제해야합니다 .
psusi

10
@MarcusJ : 7z가 각 파일이 아카이브에서 시작되는 위치를 마술처럼 알고 있다고 생각하십니까? 또한 일반적인 압축 알고리즘 (gzip, bzip2)은 콘텐츠 스트리밍에서 작동합니다. 다음 단계에서는 첫 번째 단계에서 100 % 완료 할 필요가 없습니다.
souser12345

11
또한 @MarcusJ는 두 가지 다른 것을 혼동하는 것처럼 보입니다. 그렇게 할 때 tar xvzf압축되지 않은 데이터 하드 디스크에 .tar포맷 되지 않습니다 ! 당신이 실행 gunzip blah.tar.gz한 다음 tar xf blah.tar에 데이터를 디스크에 두 번 (.tar로 한 번, 파일 시스템에서 파일로 다시 한 번) 쓰는 것이 맞습니다 . 그러나 아무도 실제로 그렇게하지 않습니다. tar xzf사용하는 UNIX 파이프 (기본적으로 메모리 복사)에서 비 압축 데이터를 전송 gzip(또는 무엇이든 압축기)로 tar, 데이터가되도록 하지 디스크에 기록 .tar형식입니다.
allquixotic

14
내가 아는 한 가지는 tar데이터 손상과 관련하여 (특히 압축 된) 끔찍하게 작동한다는 것입니다. 최신 형식으로 추가 된 작은 중복 / 복구 데이터는 금 가치가 있습니다
PPC

답변:


178

1 부 : 성능

다음은 두 가지 별도의 워크 플로와 그 작업을 비교 한 것입니다.

blah.tar.gz압축되지 않은 경우 2GB (압축률 50 %)를 차지하는 1GB의 gzip 압축 데이터 인 디스크에 파일 이 있습니다.

보관 및 압축을 별도로 수행하는 경우이를 만드는 방법은 다음과 같습니다.

tar cf blah.tar files ...

이것은 압축되지 않은 형태 blah.tar의 단순한 집합입니다 files ....

그럼 당신은 할 것

gzip blah.tar

blah.tar디스크 의 내용을 읽고 gzip 압축 알고리즘을 통해 압축하고 내용을에 쓴 blah.tar.gz다음 파일의 링크를 해제 (삭제)합니다 blah.tar.

이제 압축을 풀자!

방법 1

당신은 blah.tar.gz어떤 식 으로든 가지고 있습니다 .

다음을 실행하기로 결정했습니다.

gunzip blah.tar.gz

이것은 것입니다

  • 의 1GB 압축 데이터 내용을 읽습니다 blah.tar.gz.
  • gzip메모리 의 압축 해제 기를 통해 압축 된 데이터를 처리하십시오 .
  • 메모리 버퍼가 "블록"에 해당하는 데이터로 채워지면 압축되지 않은 데이터를 blah.tar디스크 의 파일 에 기록하고 모든 압축 된 데이터를 읽을 때까지 반복합니다.
  • 파일을 링크 해제 (삭제)하십시오 blah.tar.gz.

이제 blah.tar디스크에 압축되지 않았지만 데이터 구조 오버 헤드가 매우 낮은 하나 이상의 파일이 들어 있습니다. 파일 크기는 아마도 모든 파일 데이터의 합보다 몇 바이트 더 클 것입니다.

당신은 실행 :

tar xvf blah.tar

이것은 것입니다

  • 파일 권한, 파일 이름, 디렉토리 등에 대한 정보를 포함하여 2GB의 압축되지 않은 데이터 내용 blah.tartar파일 형식의 데이터 구조를 읽습니다.
  • 2GB의 데이터와 메타 데이터를 디스크에 기록하십시오. 여기에는 데이터 구조 / 메타 데이터 정보를 적절하게 디스크에 새 파일 및 디렉토리 작성으로 변환하거나 기존 파일 및 디렉토리를 새 데이터 컨텐츠로 다시 작성하는 작업이 포함됩니다.

이 프로세스에서 디스크에서 읽은 총 데이터는 1GB (gunzip의 경우) + 2GB (tar의 경우) = 3GB입니다.

이 프로세스에서 디스크에 기록한 총 데이터는 2GB (gunzip의 경우) + 2GB (tar의 경우) + 메타 데이터의 경우 몇 바이트 = 약 4GB입니다.

방법 2

당신은 blah.tar.gz어떤 식 으로든 가지고 있습니다 .

다음을 실행하기로 결정했습니다.

tar xvzf blah.tar.gz

이것은 것입니다

  • blah.tar.gz한 번에 한 블록 씩 의 1GB 압축 데이터 내용 을 메모리로 읽습니다.
  • gzip메모리 의 압축 해제 기를 통해 압축 된 데이터를 처리하십시오 .
  • 메모리 버퍼가 가득 차면 메모리의 해당 데이터를 파일 형식 파서로 파이프tar 하여 메타 데이터 등에 대한 정보와 압축되지 않은 파일 데이터를 읽습니다.
  • 메모리 버퍼가 tar파일 구문 분석기 에 가득 차면 파일과 디렉토리를 작성하고 압축되지 않은 내용으로 채워서 압축되지 않은 데이터를 디스크에 씁니다.

이 프로세스에서 디스크에서 읽은 총 데이터는 1GB의 압축 데이터입니다.

이 프로세스에서 디스크에 기록한 총 데이터는 2GB의 압축되지 않은 데이터 + 메타 데이터의 경우 몇 바이트 = 약 2GB입니다.

당신이 통지하는 경우, 디스크 I의 양 /의 O 방법 2 입니다 동일 의 I / O를, 말하자면, 수행하는 디스크 Zip또는 7 - 우편 압축 비율의 차이에 대한 조정 프로그램.

압축 비율이 문제가된다면 컴프레서를 사용하여 Xz캡슐화하십시오 tar. LZMA2의 TAR 아카이브는 7-Zip에서 사용할 수있는 가장 진보 된 알고리즘만큼 효율적입니다.

2 부 : 기능

tar 유닉스 권한을 파일 메타 데이터 내에 저장하고, 모든 종류의 다른 권한, 심볼릭 링크 등으로 디렉토리를 성공적으로 압축하는 것으로 잘 알려져 있으며 테스트되었습니다. 여러 파일을 가져와야하는 경우가 몇 개 이상 있습니다. 하나의 파일 또는 스트림으로 압축하지만 반드시 압축 할 필요는 없습니다 (압축이 유용하고 자주 사용되지만).

3 부 : 호환성

대부분의 Windows 사용자가 .zip 또는 .rar 압축 풀기 프로그램에 액세스 할 수있는 것과 같이 대부분의 도구는 "최소 공통 분모"파일 형식이므로 소스 또는 이진 형식으로 .tar.gz 또는 .tar.bz2로 배포됩니다. , 심지어 가장 기본적인 것조차, 나이와 상관없이 적어도 tar와 gunzip에 접근 할 수 있습니다. 안드로이드 펌웨어조차도 이러한 도구에 액세스 할 수 있습니다.

최신 배포를 실행하는 청중을 대상으로하는 새로운 프로젝트는 .tar.xz (gzip 또는 bzip2보다 더 잘 압축되는 Xz (LZMA) 압축 형식 사용) 또는 .7z와 같은보다 현대적인 형식으로 배포 할 수 있습니다. ZIP 또는 RAR 파일 형식은 여러 파일을 단일 파일로 캡슐화하기위한 레이아웃을 압축하고 지정합니다.

당신은 .7z 음악 같이 새로운 형식의 온라인 다운로드 상점에서 판매되지 않는 것과 같은 이유에서 더 자주 사용 표시되지 않는 작품 으로, 또는 비디오 의 WebM . 고대 또는 매우 기본적인 시스템을 사용하는 사람들과의 호환성.


모든 내용이 세 개의 별개의 헤더로 구분되어 큰 답변을 얻었습니다.
JFW

2
"3 부 : 호환성"이 @Kruug의 답변에서 복사 된 것으로 보입니다.
titaniumdecoy

23
@titaniumdecoy 처음에 그 부분을 작성하여 크루그의 답변으로 편집 한 사람이 동질이라는 것을 알았습니까?
slhck

2
지적 해 주셔서 감사합니다. 그러나이 페이지의 두 가지 답변에서 동일한 텍스트 블록을 갖는 것은 약간 어리석은 것처럼 보입니다.
titaniumdecoy

1
이는 tar아카이빙 에코 시스템에 적합한 이유 (예 : 파일을 모으고 성능 향상 및 권한 절약과 같은 다른 이점)를 제공하지만 현대적인 대안 dar을 대신 사용 하지 않는 이유는 다루지 않습니다 . 다시 말해,이 답변은 파일 어 그리 게이터의 사용을 정당화하지만 tar소프트웨어 자체 는 사용하지 않습니다 .
gaborous

101

이것은 스택 오버플로에서 답변되었습니다 .

bzip 및 gzip은 파일 그룹이 아닌 단일 파일에서 작동합니다. 평범한 zip (및 pkzip)은 파일 그룹에서 작동하며 기본 제공 아카이브 개념이 있습니다.

* nix 철학은 특정 작업을 매우 잘 수행하고 서로 연결할 수있는 작은 도구 중 하나입니다. 그렇기 때문에 여기에는 특정 작업이있는 두 가지 도구가 있으며 서로 잘 맞도록 설계되었습니다. 또한 tar를 사용하여 파일을 그룹화 한 다음 압축 도구 (bzip, gzip 등)를 선택할 수 있습니다.

대부분의 Windows 사용자가 .zip 또는 .rar 압축 풀기 프로그램에 액세스 할 수있는 것처럼 대부분의 도구는 "최소 공통 분모"파일 형식이기 때문에 많은 도구가 소스 또는 이진 형식으로 .tar.gz 또는 .tar.bz2로 배포됩니다. 심지어 가장 기본적인 적어도에 액세스 할 수 없습니다 targunzip상관없이 아래로 깎았 얼마나 오래되었거나. 안드로이드 펌웨어조차도 이러한 도구에 액세스 할 수 있습니다.

최신 배포를 실행하는 청중을 대상으로하는 새로운 프로젝트는 .tar.xz( gzip 또는 bzip2보다 나은 압축 Xz ( LZMA ) 압축 형식 사용) 또는 ZIP 또는 RAR 과 유사한 .7z 와 같은보다 현대적인 형식으로 배포 할 수 있습니다. 여러 파일을 단일 파일로 캡슐화하기위한 레이아웃을 압축하고 지정합니다.

당신은 .7z 음악 같이 새로운 형식의 온라인 다운로드 상점에서 판매되지 않는 것과 같은 이유에서 더 자주 사용 표시되지 않는 작품 으로, 또는 비디오 의 WebM . 고대 또는 매우 기본적인 시스템을 사용하는 사람들과의 호환성이 중요합니다.


7
안녕하세요 @Kruug, 저는 사람들 이 다른 형식을 선택할 때 왜 이러한 형식을 사용 하도록 선택 했는지에 대한 실용적인 관점을 제공하기 위해 게시물을 편집했습니다 . 나는 당신이 이미 가지고있는 텍스트를 바꾸지 않았습니다. 이것은이 질문에 대한 정식 답변으로 보이는 것이 전체 그림을 갖도록하기위한 것입니다. 당신이 원하는 경우 내 편집을 자유롭게 편집하십시오 :)
allquixotic

5
@allquixotic 시작 사람? 편집을 편집하고 편집 할 수 있도록 편집을 편집하고 편집하십시오.
SnakeDoc

21
이 답변은 "때때로 부당한 공감대에 의해 날아가 버린"사례입니다. 압축 타르의 내용을 나열하는 문제의 핵심 문제는 다루지 않으며 원래 답변조차 아닙니다!
Ярослав Рахматуллин

5
위대한 정의를 위해 -1. 이것은 주석이어야했다.
wim

6
레거시 / 최소 공통 분모 인수를 구입하지 않습니다. 새로운 시스템 (sun)에서 다른 tar.gz 패키지 소프트웨어를 설치하기 위해 gzip / gunzip (sunfreeware에서)을 자주 다운로드해야한다는 것을 기억합니다 (sun tar가 빨려서 gnu tar 포함). 레거시 / 공통 분모의 경우 tar.Z(압축 / 압축 해제) 상태였습니다. 유틸리티의 진행은 변화와 개선의 끊임없는 흐름이었습니다 (Z => zip => gz => bz2 => 7z => xz (또는 원하는 순서). tar의 역할과 관련하여 일부 utils는 압축 해제 / 압축 만 수행하며 파일 계층 구조를 묶으려면 tar가 여전히 필요합니다.
마이클

63

Tar에는 Unix 파일 시스템에 대한 모든 것을 알고있는 다양한 조작 및 수정 자 세트가 있습니다. Unix 권한, 파일과 관련된 다른 시간, 하드 링크, 소프트 링크 및 기호 링크가 파일 시스템 그래프에주기를 유발할 수있는 가능성에 대해 알고 있으며이 모든 데이터를 관리하기위한 여러 가지 다른 방법을 지정할 수 있습니다. .

  • 추출 된 데이터가 파일 액세스 시간을 보존하도록 하시겠습니까? 타르도 그렇게 할 수 있습니다. 권한을 유지하려면? 타르도 그렇게 할 수 있습니다.

  • 심볼릭 링크를 심볼릭 링크로 유지 하시겠습니까? Tar은 기본적으로 그렇게합니다. 대신 대상을 복사 하시겠습니까? 타르도 그렇게 할 수 있습니다.

  • 하드 링크 된 데이터가 한 번만 (즉, 올바른 일을하기 위해) 저장되도록 하시겠습니까? 타르가 그렇게합니다.

  • 스파 스 파일을 잘 처리 하시겠습니까? 타르도 그렇게 할 수 있습니다.

  • 압축되지 않은 데이터를 원하십니까 (왜)? 타르도 그렇게 할 수 있습니다. gzip으로 압축하려면? 타르도 그렇게 할 수 있습니다. bzip2로? 타르도 그렇게 할 수 있습니다. 임의의 외부 압축 프로그램이 있습니까? 타르도 그렇게 할 수 있습니다.

  • 원시 장치에서 쓰거나 복구하려고합니까? 타르의 형식은 잘 처리됩니다.

  • 기존 아카이브에 파일을 추가 하시겠습니까? 타르도 그렇게 할 수 있습니다. 변경된 내용을 확인하기 위해 두 개의 아카이브를 비교하려면? 타르도 그렇게 할 수 있습니다. 변경된 아카이브 부분 만 업데이트하려면? 타르도 그렇게 할 수 있습니다.

  • 둘 이상의 파일 시스템에 아카이브하지 않도록 하시겠습니까? 타르도 그렇게 할 수 있습니다.

  • 마지막 백업보다 최신 파일 만 가져 오시겠습니까? 타르도 그렇게 할 수 있습니다.

  • 사용자 및 그룹 이름 또는 번호를 유지 하시겠습니까? 타르는 어느 쪽이든 할 수 있습니다.

  • /dev추출 후 시스템이 올바르게 실행되도록 장치 노드 (예 :의 파일 ) 를 보존해야 합니까? 타르도 그렇게 할 수 있습니다.

Tar는 수십 년 동안 많은 유스 케이스를 처리하기 위해 발전해 왔으며 사람들이 Unix 파일 시스템으로하고 싶은 일에 대해 많은 것을 알고 있습니다.


12
임의의 압축기를 사용하기 위해 GNU tar가 필요하지 않습니다. tar에 아카이브를 stdout에 기록 f -하고 압축기로 파이프하도록 지시하십시오.
Ilmari Karonen

3
"압축되지 않은 데이터를 원하십니까 (왜)?" tar파일 시스템 트리를 한 곳에서 다른 곳으로 복사하고 권한 등을 보존 하는 데 매우 자주 사용 하며이 경우 압축에는 추가 CPU 사이클이 필요합니다. 예 tar cf - * | tar xf - -C /somewhere.
Steve

1
또한 대상 파일 시스템이 중복 제거를 수행 할 때 .tar 파일이 필요합니다. 중복 제거를 수행하는 파일 시스템에서 압축 된 아카이브를 생성하면 중복 제거 비율이 상당히 낮아집니다. 예 : 한 번 $ 10,000.00 tar.gz 파일을 삭제했습니다. 즉, 누군가 압축을 사용했기 때문에 1 만 달러 상당의 저장 공간을 차지하고있었습니다.
Aaron

@Steve CPU주기는 LZ4 또는 LZO와 같은 알고리즘의 디스크 IO보다 저렴할 수 있습니다. 이것이 zram 및 NTFS, ZFS, Btrfs와 같은 투명한 압축 파일 시스템에서 사용되는 이유입니다. 때로는 디스크 IO의 양이 크게 줄어들 기 때문에 실제로 압축하는 것보다 빠릅니다.
phuclv

30

보관압축 의 두 가지 고유 한 프로세스를 혼동합니다 .

아카이버를 사용하는 이유

압축없이 아카이빙을 사용하는 한 가지 이유는 예를 들어 많은 파일이 한 호스트에서 다른 호스트로 복사되는 경우입니다. 다음과 같은 명령

tar cf - some_directory | ssh host "(cd ~/somewhere | tar xf -)"

일을 상당히 빠르게 할 수 있습니다. 파일을 압축 할 수 없거나 SSH 를 압축으로 설정 한 경우 상당한 CPU 시간을 절약 할 수 있습니다. 물론, 아카이빙 기능이있는 최신 압축 도구를 사용하여 압축을 해제 할 수 있습니다. 장점은 tar모든 시스템에서 사용할 수 있다는 것입니다.

gzip 압축과 함께 아카이버를 사용하는 이유

내가 tar함께 사용하는 한 가지 이유 gzip속도입니다! 한 곳에서 다른 곳으로 몇 GiB의 텍스트 파일을 전송하려는 경우 압축은 장기 저장이 아닌 전송에만 사용되므로 마지막 바이트를 짜는 데 신경 쓰지 않습니다. 이 경우 gzipCPU를 최대로 사용 하지 않는 ( 예 : 7-Zip 과 달리 )을 사용합니다. 즉, I / O 바운드이고 CPU 바운드가 아닙니다. 그리고 다시 : gzip어디서나 사용할 수있는 것으로 간주 될 수 있습니다.

사용하는 이유 tar에 찬성 scp, rsync

이 뛰는 scp당신이 작은 파일의 많은 (파일의 수백 수천, 예를 들어 메일 디렉토리)에 복사해야합니다. rsync, 굉장히, 모든 곳에서 사용하지 못할 수 있습니다. 또한 rsync파일의 일부 또는 이전 버전이 대상에 이미 존재하는 경우에만 비용을 지불합니다. tar실제 데이터에 따라 압축 여부에 관계없이 초기 복사 속도가 가장 빠릅니다.


1
그러나 보관하려는 경우 압축하지 않겠습니까? 예, 쉽게 압축되지 않은 파일의 경우 시간을 절약 할 수 있지만 아카이버는 헤더를 제외하고는 음악이 압축률이 낮다는 것을 알고 있어야합니다.
MarcusJ

2
필요하지 않거나 컨텐츠를 압축 할 수 없습니다.
Hasturkun

4
성능상의 이유로 컴프레서가 데이터를 압축 할 수있는 속도를 초과하는 초고 대역폭 네트워크 링크를 통해 데이터를 전송할 때 압축되지 않은 파일 집계를 사용하는 것이 더 쉽습니다. 이것은 예를 들어 기가비트 이더넷으로 달성 할 수 있습니다. 압축률이 매우 좋지 않은 잘 설계된 압축 알고리즘 만 대형 데스크톱 CPU에서도 데이터를 빠르게 압축 할 수 있습니다. 임베디드 장치에서는 작업 시간이 훨씬 줄어 듭니다.
allquixotic

3
속도가 빨라질뿐만 아니라 파일 소유권, 타임 스탬프 및 속성 (사용자 권한이 허용하는 경우)을 보존 할 수 있습니다.
Andre Holzner

3
@AndreHolzner 맞아. 나는 종종한다 tar cf - . | (cd ~/somewhere; tar xvf -). 중앙 인덱스가 작성 될 때까지 (예 : zip 파일) 기다릴 필요가없는 것이 정말 유용합니다.
user239558

24

여기에 다른 좋은 대답을 추가하면 압축 파일이 스트림과 같기 때문에 조합 tar+를 선호합니다 gzip|bzip2|xz. 쉽게 파이프 할 수 있습니다.

인터넷에서 사용 가능한 파일을 압축 해제해야합니다. zip또는 rar형식 중 하나를 먼저 다운로드 한 다음 압축을 풀어야합니다. 와 tar.{gz,bz2,xz}나는 디스크에 압축 된 아카이브 phisically을 필요로하지 않고, 다운로드 같은 단계에서 압축을 해제 할 수 있습니다 :

curl -s http://example.com/some_compressed_file.tar.gz | tar zx

이렇게하면 압축되지 않은 파일이 디스크에 그대로 남고 전체 파일을 먼저 다운로드하는 데 시간이 걸리지 않고 다운로드가 완료된 후 압축을 풀기 때문에 전체 프로세스 속도가 빨라집니다. 대신 다운로드하는 동안 압축을 풀고 있습니다. zip또는 rar파일 로는이 작업을 수행 할 수 없습니다 .


2
나는 rar에 대해 모른다. (여러 개의 작은 파일로 분할 할 수 있기 때문에 해적에게 인기가있는 끔찍한 프로그램이지만) zip을 잘 스트리밍 할 수 있습니다. 맨 페이지에도 언급되어 있습니다. tar는 압축률이 약간 향상되는 경향이 있지만 대규모 아카이브 중간에서 효율적으로 파일을 추출하거나 업데이트 할 수 있다는 장점도 있습니다. 압축과 랜덤 액세스는 트레이드 오프입니다.
psusi

3
@psusi가 잘못되었습니다. 이처럼 해킹을 할 수는 있지만 다운로드하는 동안 압축을 풀지 않고 메모리에있는 모든 파일을 다운로드 한 다음 압축을 푸는 것입니다. 그리고 funzipzipfile에서 첫 번째 파일 만 추출합니다.
Carlos Campderrós

2
@Stu는 명확하게 설명하고 문제가 아니며 시간을 최적화하는 것입니다 (생각한 것이면 공간에 신경 쓰지 않습니다)
Carlos Campderrós

1
양면 작업 : 한쪽에서 타르를, 다른 쪽에서도 타르를 풀 수 있습니다.tar zc /some/folder | ssh user@host "cd /other/folder && tar zx"
Carlos Campderrós

1
@psusi는 pkzip을 사용하여 여러 플로피에 파일을 저장할 때 이전에 기억했던 것처럼, 아카이브 끝의 zip store 카탈로그입니다. 항상 추출 시작 또는 카탈로그 표시를 위해 마지막 플로피를 요청합니다. 따라서 en.wikipedia.org/wiki/File:ZIP-64_Internal_Layout.svg
Mikhail Moskalev

13

(GNU) Tar을 고수해야하는 몇 가지 이유가 있습니다.

그것은:

  • GPL 라이센스
  • 유닉스 철학의 의미에서 좋은
    • 여러 작업을 수행 할 수있는 단일 목적 도구
  • 잘 문서화되고 많은 신뢰할 수있는 기능이 있습니다
  • 여러 압축 알고리즘과 호환
  • 사용하기 쉽고 사람들은 습관을 발전시켜 왔습니다
  • 광범위하게 사용 가능
  • RMS ( Emacs 제외 )에서 시작한 소프트웨어를 사용할 때 따뜻하고 퍼지

특정 쇠고기가 내용물을 읽기 전에 타르볼을 "압축 해제"해야하는 경우라면 아마도 옳을 것입니다. WinRAR7-Zip 이 자동으로 수행합니다. 그러나 압축되지 않은 형식으로 아카이브의 내용을 문서화하는 등이 문제에 대한 간단한 해결 방법이 있습니다.


1
그것은 무료 소프트웨어입니다-많은 것들이 그것의 기능을 잘합니다-다른 것들에 비해 거의 문서화되지 않았으며 많은 기능을 가지고 있습니다-기능은 거의 사용되지 않으며 사용하기가 쉽지 않습니다. 그것은 몇 가지 압축 알고리즘을 지원합니다-다른 것만 큼 많지 않습니다
Griffin

4
유닉스 신들이 그것을 만들었으므로 우리는 그것을 사용해야합니다!
SnakeDoc

28
Tar은 또한 기본적으로 UNIX 권한을 저장하며 잘 알려져 있으며 테스트되었습니다. 여러 파일을 단일 파일 또는 스트림으로 가져와야하지만 압축 할 필요는없는 경우가 몇 개 이상 있습니다.
LawrenceC

3
운 좋게 tar는 GNU 버전에만 국한되지 않습니다. GNU tar는 확실히 훌륭한 소프트웨어이지만, libarchive + 관련 프론트 엔드는 다른 소프트웨어 프로젝트에 훨씬 빠르고 쉽게 포함시킬 수 있습니다. 라이센스 싸움으로 바꾸지 않고 tar에 대한 논쟁을 할 수 있습니다.
Lucas Holt

1
나는 냉소적이지 않습니다. 저는 RMS와 그가 믿는 방식을 좋아합니다.
Ярослав Рахматуллин

11

.ZIP과 같은 파일 형식이 필요 파일 이름의 카탈로그를 읽으려면 먼저 파일의 끝을 읽을 수있는 소프트웨어를. 반대로 tar는 해당 정보를 압축 된 스트림과 함께 저장합니다.

tar 방식의 장점은 네트워크 소켓과 같이 사용 불가능한 파이프에서 데이터를 읽는 동안 데이터를 압축 해제 할 수 있다는 것입니다.

zip 방식의 장점은 디스크의 정적 파일의 경우 전체 아카이브를 먼저 압축 해제하지 않고도 컨텐츠 및 메타 데이터를 찾아 볼 수 있다는 것입니다.

당신이하는 일에 따라 둘 다 용도가 있습니다.


5
아니요, zip 파일을 파이프와 스트림으로 읽고 쓸 수 있습니다.
Mark Adler

그것은 구현에 따라 다를 수 있습니다. 원래 pkzip은 확실히 지원하지 않습니다.
xorsyst

1
그렇습니다. 소프트웨어를 지원하려면 소프트웨어를 작성해야합니다. zip 형식은 길이와 CRC를 사용하여 압축 된 데이터를 따를 수있는 데이터 디스크립터와 함께이를 완벽하게 지원합니다.
Mark Adler

@MarkAdler, 어떤 소프트웨어? Infozip은 파이프에서 압축 해제를 지원하지 않습니다.
psusi


11

모든 질문에 직접 대답하기를 꺼려하는 것으로 보이며, 질문을 바로 잡기위한 출발점으로 사용하는 것이 분명합니다. 총을 드리겠습니다.

동일한 데이터 구조에서 집계 및 압축을 수행하는 파일 형식을 사용하는 것과 비교할 때 gzip 또는 bzip2로 캡슐화 된 tar를 사용하는 경우 집계 / 압축 / 압축 해제 단계 중에 성능이 저하됩니까? 비교되는 압축기의 런타임이 동일하다고 가정합니다 (예 : gzip 및 Deflate가 유사 함).

실제로 tar와 gzip은 일반적으로 두 가지 프로세스이므로 Info-ZIP의 zip과 같은 아카이버가 제공하지 않는 많은 멀티 코어 속도 이점을 얻을 수 있습니다. 압축 비율 측면에서 tar + gzip은 일반적으로 deflate가있는 zip보다 눈에 띄게 우수하지만 전자는 파일 간의 상관 관계에서 이점을 얻을 수 있지만 후자는 파일을 개별적으로 압축합니다. 압축 압축 아카이브는 압축 시간이 단축되는 압축 압축 아카이브이기 때문에 추출시 속도 이점으로 해석됩니다.

.7z 및 .zip과 같은 다른 파일 형식에는없는 tar 파일 형식의 기능이 있습니까?

예, tar는 Unix 용으로 설계되었으며 Unix 파일 시스템의 모든 이상한 작은 구석 구석, nookier 및 crannier Mac OS X Unix 파일 시스템을 정확하게 기록하고 복원 할 수 있도록 수년에 걸쳐 진화했습니다. zip은 권한, 시간, 소유자, 그룹 및 심볼릭 링크와 같은 많은 메타 데이터를 보유 할 수 있지만 여전히 모든 것은 아닙니다. 예를 들어, zip이나 7z는 스파 스 파일을 인식하거나 이용할 수 없으며 하드 링크를 인식하거나 복원 할 수 없습니다.

tar는 오래된 파일 형식이며 오늘날 최신 파일 형식이 존재하므로 tar (gzip, bzip2 또는 새로운 xz로 캡슐화되어 있음)가 오늘날 GNU / Linux, Android, BSD 및 기타 UNIX에서 여전히 널리 사용되는 이유는 무엇입니까? 파일 전송, 프로그램 소스 및 바이너리 다운로드, 때로는 패키지 관리자 형식의 운영 체제?

여기에 다른 좋은 답변이 많이 있습니다. 가장 좋은 방법은 그냥 작동 한다는 것입니다. 더 나은 압축 형식 (예 : xz)으로 계속 업데이트하고 동일한 tar 형식과 컴파일 된 tar 유틸리티를 계속 사용할 수 있습니다. 많은 것들을 포장하고 다른 쪽 끝을 모두 풀고 싶다면 가장 오래되고 가장 완벽하고 디버깅 된 소프트웨어 중 하나를 사용해야 할 이유가 거의 없습니다.

임의 액세스, 부분 업데이트 또는 컨텐츠 단편을 처리해야하는 기타 사항을 원하거나 전체 내용을 읽지 않고 내용을 찾으려면 다른 형식을 사용하려고합니다.


CWCommunity Wiki의 약자입니다 . 참조 "커뮤니티 위키"게시물은 무엇입니까? .
ctype.h

질문에 15 개 이상의 답변이 있기 때문에 CW라고 생각합니다. 이 답변을 게시 한 경우 15 일이므로 질문과 모든 답변이 CW로 표시되었습니다.
ctype.h

나는이 답변이 질문에 직접 인용하는 것 외에 다른 답변이하지 않는 것을 말하는 방법을 알지 못합니다 (질문의 원래 개정이 NARQ로 닫힐만큼 끔찍하기 때문에 BTW라고 썼습니다). 그래도 시도해보십시오.
allquixotic

음 당신이 생각하고 싶은 것은 괜찮습니다. 귀하의 답변이나 다른 답변은 성능 저하가 있는지 여부를 다루는 것 같습니다. 귀하의 답변은 눈에 띄는 압축 차이를 다루지 않지만 다른 사람들은 그렇지 않습니다. 실제로 성능을 다루지 않기 때문에 (성능 섹션은 실제로 워크 플로에 관한 것이지, 성능에 관한 것은 아닙니다), 다른 답변이 한 곳에서 모든 것에 응답하지 않습니다. 성과 패널티 질문을 쓴 것이 흥미롭지 만 답변하지 않았습니다! 그림을 이동.
Mark Adler

그건 그렇고, 워크 플로 토론은 아무도 할 수없는 일에 관한 것입니다. 타르 파일을 디스크에 쓰고 압축하는 것입니다. tar는 항상 압축 프로그램을 직접 호출하거나 압축 프로그램의 파이프로 직접 호출하는 데 사용됩니다.
Mark Adler

11

공연

가장 큰 차이점은 압축 및 아카이브가 수행되는 순서입니다. tar아카이브는 아카이브를 압축기로 선택적으로 전송하고 아카이브를 zip빌드하고 아카이브에 삽입 될 때 파일 데이터를 32KB 청크로 압축합니다. 파일 데이터를 작은 청크로 분할하고 개별적으로 압축함으로써 아카이브의 모든 파일을 압축 해제하기 전에 특정 파일 또는 파일의 일부를 추출 할 수 있습니다. 또한 다시 시작하기 전에 압축기가 매우 큰 사전을 작성하지 못하게합니다. 이것은 압축이 더 빨라지지만 더 큰 사전 크기로 전체를 압축하는 것만 큼 비율이 좋지는 않음을 의미합니다.

두 번째 파일의 첫 번째 500 바이트가 첫 번째 파일의 마지막 500 바이트와 동일한 두 개의 파일을 생각하여이를 시각화 할 수 있습니다. 이 zip방법을 사용하면 두 번째 파일에 대해 압축기가 다시 시작되므로 첫 번째 파일이 동일한 데이터로 끝났다는 것을 기억하지 않으므로 두 번째 파일에서 중복 된 데이터를 제거 할 수 없습니다.

인기

에 비해 여러 가지 장점이있는 다른 형식이 많이 있습니다 tar. 7 우편 번호는 유닉스 파일 권한을 저장하지 않지만, dar수행, 그리고 zip수 있으며, 세 개의 아카이브 내에서 빠른 브라우징, 파일의 하위 집합을 추출하고, 업데이트 파일을 수있는 인덱스를 저장합니다. 또한 압축에 멀티 코어 CPU를 사용할 수도 있습니다.

모두가 여전히 사용 tar하는 이유는 모두가 여전히 Windows를 사용하는 것과 같은 이유이며 Flash는 사람들이 변화를 좋아하지 않습니다. 변화해야 할 강력한 이유없이 사람들은 자신이 알고있는 것을 고수합니다. dar대부분의 사람들이 이미 tar설치 했을 때 형식으로 파일을 게시하는 것을 정당화 할만큼 충분한 이점을 제공하지 못하고 거의 알지 못 dar하므로 단순한 관성은 이전 표준을 유지합니다.


2
zip은 Unix 권한을 저장하고 복원 할 수 있습니다. 일반적으로 Unix 시스템과 함께 배포되는 InfoZIP의 zip 및 unzip 유틸리티가이를 수행합니다.
Mark Adler

3
zip은 파일을 32K 청크로 압축하지 않습니다. 32K의 슬라이딩 윈도우 크기와 압축 방법을 혼동하고 있습니다.
Mark Adler

1
gzip -9에는 900kB 사전이 없습니다. 모든 수준의 gzip은 32K 사전을 사용합니다. 당신은 bzip2를 생각하고있을 것입니다.
Mark Adler

하나의 답변에 너무 많은 잘못된 정보가 있습니다.
Mark Adler

1
답변을 수정하거나 답변을 삭제해야합니다.
Mark Adler

7

Tar은 파일 시스템을 파일로 전송하기위한 것이 아니라 파일 시스템의 전체 충실도 백업을 수행하기 위해 만들어졌습니다. 따라서 tar 유틸리티는 파일 시스템 구조에 중요한 모든 것을 보존하는 아카이브를 작성하기위한 가장 완벽한 유틸리티입니다.

여기에는 하나 이상의 경쟁 도구에서 누락 된 이러한 모든 기능이 포함됩니다.

  • 파일 소유권
  • 파일 권한
  • 덜 일반적인 파일 권한 (예 : setuid, sticky bit)
  • 심볼릭 링크
  • 하드 링크
  • 장치 항목 (예 : 문자 및 블록 장치)
  • 스파 스 파일
  • ACL 항목 ( 일부 버전에서 지원되지는 않음 )
  • 확장 / 사용자 속성 ( 일부 버전에서 지원되지는 않음 )
  • SElinux 레이블 ( 일부 버전에서 지원되지는 않음 )

또한 --one-file-system백업을 만들 때 매우 유용한 옵션 도 있습니다.

새로운 기능이 파일 시스템에 추가 될 때마다 지원이 tar먼저 (또는 독점적으로) 추가됩니다 . 따라서 파일을 저장하는 가장 호환 가능한 방법입니다.


이 답변은 유일하게 이해되는 것입니다. 게시 해 주셔서 감사합니다.
gaborous

5

현재 MP3, JPG, 비디오, tar.gz 파일, JAR 패키지, RPM, DEB 등 압축 파일이 많이 있습니다. 전송할 여러 파일을 단일 파일로 묶어야하는 경우 파일을 압축하지 않고 파일 만 묶는 'tar'유틸리티를 사용하는 것이 좋습니다.

압축 파일을 압축하는 데 시간과 전기가 낭비 될뿐만 아니라 원본보다 큰 파일이 생성되는 경우가 종종 있습니다.

또 다른 용도는 압축률을 향상시키는 것입니다. 예를 들어, 로그 파일 묶음을 'tar'한 다음 결과를 gzip으로 압축하면 먼저 압축 한 다음 'tar'로 묶은 것보다 작은 파일이 생성 될 수 있습니다. 물론 tar를 사용하면 원하는 압축 알고리즘을 선택하고 특정 사용 사례에 맞게 압축을 최적화하는 옵션을 지정할 수 있습니다.

나는 tar '가 오늘날 매우 관련이 있으며 ZIP을 사용하는 것을 선호합니다. 사무실에서는 Windows를 사용하는 모든 사람이 7-zip을 설치하므로 tar 파일은 플랫폼 간 호환이 가능합니다.


실제로는 압축되지 않은 tar파일을 볼 수 없으며 그 이유가 있습니다. tar매우 큰 청크를 사용하므로 파일 끝에서 많은 패딩을 얻습니다. 이 모든 0을 제거하려면 거의 항상 gzip다시 생각하지 않고 사용 하는 것이 좋습니다.
Christian

재미있는 예외는 명백한 이유로 gzip 소스 코드를 알몸 타르로 사용할 수 있다는 것입니다.
Mark Adler

4

어쩌면 우리는 완전히 다른 도구 대신 tar를 기반으로하지 않은 압축과 집계 (그리고 암호화를 추가 할 수 있음)를 모두 수행하는 "새로운"파일 형식이 왜 궁금 할 것입니다.

내가 이해 한 바와 같이, 역사적인 이유가 있습니다 (OS 역사, 특허 "보호", 소프트웨어 벤더가 도구를 판매하는 능력 등).

이제 다른 응답에서 지적했듯이 tar는 다른 솔루션보다 분명히 열등하지 않으며 스트림 또는 Unix 권한 관리 기능과 같은 다른 측면에서 더 나을 수 있습니다.

tar에 관한 Wikipedia 기사 를 읽으면 또 다른 흥미로운 사실을 볼 수 있습니다. 이 기사는 tar의 단점을 인정 하지만 ... zip 대신 zip 사용을 제안하지는 않습니다 (실제로 zip 형식은 이러한 단점을 해결하지 못합니다).

나는 개인적인 접촉으로 끝날 것입니다. 얼마 전에 암호화 된 데이터를 저장하기위한 파일 형식을 만들어야했습니다. tar를 기본으로 사용하는 것이 편리했습니다 (예를 들어 tar는 .deb 패키지의 내부 집계 형식과 같은 다른 선택). 암호화 후 데이터를 압축하려고 시도하는 것이 완전히 쓸모없고 암호화 전에 독립 단계로 압축을 수행해야했으며 zip 암호화를 사용할 준비가되지 않았습니다 (공개 및 개인 키로 두 개의 키 암호화를 원했습니다) . 타르를 사용하면 바람처럼 일했습니다.


3

아무도 이것을 언급하지 않은 것에 놀랐습니다. 그러나 실제로 이점이 아니라 필수 인 이유 중 하나는 이전 버전과의 호환성 때문입니다. tar아카이브를 요구할 수있는 소프트웨어를 수십 년 동안 실행하는 시스템이 많이 있습니다 . 기존 시스템을 모두 "고정"하기 위해 누군가를 고용하는 것은 비용 효과적이지 않습니다.


3

tar는 UNIX이므로 tar는 UNIX입니다.

제 생각에는 오늘날 에도 여전히 사용 하는 이유 tar는 유닉스 접근 방식이 처음부터 완벽하게 완벽하게 만든 (아마도 드문) 사례 중 하나이기 때문입니다.

아카이브 작성과 관련된 단계를 자세히 살펴보면 여기서 다른 작업을 분리하는 방식이 최고의 UNIX 철학 이라는 데 동의 할 것입니다 .

  • 타임 스탬프, 소유자 및 권한과 같은 모든 관련 메타 데이터를 포함한 모든 파일, 디렉토리 및 기호 링크 를 1 바이트 스트림으로 tar변환 하는 데 특화된 하나의 도구 ( 여기에서 이름을 지정 함) .

  • 바이트의 모든 입력 스트림을 다른 (아마도) 더 작은 출력 스트림으로 gzip bz2 xz변환 하는 임의로 상호 교환 가능한 다른 도구 ( 몇 가지 옵션으로 명명 ).

이러한 접근 방식을 사용하면 개발자뿐만 아니라 사용자에게도 다음과 같은 이점이 있습니다.

  • 확장 부부 허용 tar있는 기존 압축 알고리즘 또는 어떤 아직 여전히 압축 알고리즘이 개발 될 없이 의 내부 작업에 아무것도 변경할 필요 tar전혀.

    완전히 새로운 "하이퍼-지퍼-우 트라 (hyper-zip-utra)"또는 whater 압축 도구가 나 오자마자 여러분은 이미 새로운 힘을 발휘하여 새로운 하인을 수용 할 준비가되었습니다 tar.

  • 안정성 tar 은 80 년대 초반부터 수많은 운영 체제 및 시스템에서 테스트되어 실행 된 이후로 많이 사용되었습니다.

    모든 새로운 보관 도구에 대해 소유권, 권한, 타임 스탬프 등을 반복해서 저장하는 과정에서 휠 을 재발 명할 필요가 없어 개발시 많은 (필요하지 않은 시간이 소요되는) 시간이 절약 될뿐만 아니라 모든 작업에 대해 동일한 안정성이 보장 됩니다. 새로운 신청.

  • 일관성 사용자 인터페이스는 항상 동일하게 유지됩니다.

    도구 A를 사용하여 권한을 복원하려면 옵션을 전달 --i-hope-you-rember-this-one해야하고 --this-time-its-another-one 도구 C 를 사용 하는 동안 사용해야 하는 도구 B를 사용 한다는 것은 기억할 필요가 없습니다 .`--hope-you-didnt-try-with-tool-as-switch.

    도구 D를 사용하는 동안를 사용하지 않으면 실제로 도구를 엉망으로 만들었을 것 --if-you-had-used-tool-bs-switch-your-files-would-have-been-deleted-now입니다.


3

좋은 대답은 많지만 모두 중요한 사실을 무시합니다. Tar은 유닉스 계열 세계에서 잘 알려진 사용자 및 개발자 에코 시스템을 보유하고 있습니다. ZIP이 DOS / Windows 생태계에 의해 계속 유지되는 것처럼 계속 유지됩니다. 그러한 생태계를 갖는 것은 기술적 인 장점이 아니라 기술을 유지하는 것입니다.


정말 좋은 의견, 나는 그것을 생각하지 않았고, 그것은 정말 좋은 지적입니다.
MarcusJ

3

그 이유는 "문화의 자리"입니다. 압축 타르 아카이브 이외의 다른 것을 처리하라는 요청을 받거나 Windows 세계에서 온 경우 가끔 ZIP을 처리하도록 요청 받으면 눈이 번쩍이는 수많은 사람들이 있습니다.

7-Zip, RAR 또는 다른 것에 대해 듣고 싶지 않습니다. 파일의 압축을 풀기 위해 프로그램을 설치해야한다면 문제가 없습니다. 그것이 지불을 받거나 컨텐츠가 내가 "필수품"이고 다른 방식으로 구할 수없는 경우에 할 것입니다.

tar의 한 가지 장점은 누군가에게 tarball을 보내면 즉시 인식된다는 것입니다. 수신자는 근육 메모리를 사용하여 추출 명령을 입력 할 수 있습니다.

진짜 질문은 왜 어떤 사람들은 한 바이트의 공간을 더 절약하는 데 집착하여 다른 사람들에게 이국적인 유틸리티를 설치하고 사용법을 배우는 데 시간을 낭비하도록 요구 하는가? 그리고 이국적인 압축 및 아카이브 형식의 어리석은 사용법이 있습니다. AAC 사운드 가 포함 된 H.264 비디오를 실제로 멀티 파트 RAR에 넣어야합니까?

tar 형식은 오래되었지만 파일 내용, 경로, 타임 스탬프, 권한 및 소유권과 관련된 모든 내용을 저장합니다. 심볼릭 링크뿐만 아니라 하드 링크 구조를 보존 할 수 있습니다. 또한 특수 파일을 저장하므로 /dev부트 스트랩 중에 사용되는 축소 디렉토리 와 같은 용도로 테이프 아카이브를 사용할 수 있습니다 . 바이너리 패키지 형식이 아무것도 아닌 파일 시스템 루트와 관련하여 압축되지 않은 tarball 인 Linux 배포판을 함께 넣을 수 있습니다.


다시 "집착"... 강화 된 단일 노트북으로 Warzone에 갇혀 있고 크기가 작은 20G 하드 드라이브가 거의 가득 차있을 수 있습니다. 지프를 수리하는 방법을 보여주는 100MB .PDF 설명서이지만 파일은 2 Gig .tgz 파일에 있습니다. 랩톱은 폐쇄 형 소스 독점 OS를 실행하며 시스템 파일을 삭제할 수있는 루트 액세스 권한이 없습니다. 그 100MB 파일을 추출 할 수 있다면 ...
agc

2

제기 한 특정 질문에 직접 답변 :

동일한 데이터 구조에서 집계 및 압축을 수행하는 파일 형식을 사용하는 것과 비교할 때 gzip 또는 bzip2로 캡슐화 된 tar를 사용하는 경우 집계 / 압축 / 압축 해제 단계 중에 성능이 저하됩니까? 비교되는 압축기의 런타임이 동일하다고 가정합니다 (예 : gzip 및 Deflate가 유사 함).

일반적으로 tar압축 라이브러리가 내장 된 경우 ( tar xvzf또는 tar xvjf두 번째 프로세스가 아닌 압축 라이브러리가 사용되는 또는 명령 줄 명령)를 사용하면 성능이 향상 됩니다. 이것은 두 가지 주요 원인에서 비롯됩니다.

  • 비교적 적은 수의 파일, 특히 소프트웨어 배포에 일반적으로 사용되는 파일을 처리 할 때 중복성이 높습니다. 많은 파일을 압축하면 개별 파일을 압축하는 것보다 전체 압축률이 높아집니다. "사전"은 각 파일이 아닌 모든 입력 청크에 대해 한 번 계산됩니다.

  • tar파일 시스템을 이해합니다. 작동 / 실행 가능한 운영 체제를 저장하고 복원하도록 설계되었습니다. UNIX 파일 시스템에서 중요한 사항을 정확히 파악하고이를 충실하게 캡처하고 복원합니다. 다른 툴들 ... 항상 그런 것은 아닙니다. 특히 zip 제품군은 문서가 중요한 것이지 충실한 OS에 민감한 사본이 아닌 OS 제품군간에 파일을 공유하기 위해 더 잘 설계되었습니다.

.7z 및 .zip과 같은 다른 파일 형식에는없는 tar 파일 형식의 기능이 있습니까?

스파 스 파일 처리 직접 데이터베이스 라이브러리 중 일부는 스파 스 파일 (데이터가 명목상 GB 인 파일)에 의존하지만 실제로 작성 및 저장되는 실제 데이터는 훨씬 적으며 디스크 블록 만 실제로 사용됩니다. 알지 못하는 도구를 사용하는 경우 압축을 풀면 디스크 블록 소비량이 많아 결국 모두 0이됩니다. 그것을 희소 파일로 바꾸는 것은 ... 고통 스럽습니다. 당신이 그것을 할 방이 있다면. 스파 스 파일이 무엇인지 파악하고 존중하는 도구가 필요합니다.

메타 데이터. 유닉스는 수년 동안 이상한 것들을 진화시켜 왔습니다. 14 개의 문자 파일 이름, 긴 파일 이름, 링크 심볼 링크, 고정 비트, 수퍼 유저 비트, 상속 된 그룹 액세스 권한 등 Tar는이를 이해하고 재생산합니다. 파일 공유 도구 ... 별로는 아닙니다. 많은 사람들이 원하는 방식으로 링크를 사용하지 않습니다 ... 링크를 사용하는 소프트웨어로 작업 한 다음 인식하지 않는 도구를 사용하여 백업 및 복원을 수행 한 경우 많은 이름을 가진 단일 파일 대신 파일. 고통. 소프트웨어가 실패하고 디스크 팽창이 발생했습니다.

tar는 오래된 파일 형식이며 오늘날 최신 파일 형식이 존재하므로 tar (gzip, bzip2 또는 새로운 xz로 캡슐화되어 있음)가 오늘날 GNU / Linux, Android, BSD 및 기타 UNIX에서 여전히 널리 사용되는 이유는 무엇입니까? 파일 전송, 프로그램 소스 및 바이너리 다운로드, 때로는 패키지 관리자 형식의 운영 체제?

tar공장. 그것은 설계된 작업을 잘 수행합니다. 다른 선전 교체 (가 있었다 cpio, pax등, 등). 그러나 tar는 거의 모든 것에 설치되며 사용하는 압축 라이브러리도 다른 이유로 매우 일반적입니다. 타르보다 훨씬 더 좋은 것은 없습니다. 분명한 이점이없고, 커뮤니티에서 많은 내장 된 사용과 지식을 가지고 있으면 대체 할 수 없습니다. 타르는 수년에 걸쳐 많은 사용을 해왔다. 파일 시스템 또는 텍스트가 아닌 파일에 대해 생각하는 방식이 크게 바뀌면 코드를 전송하는 방법이됩니다 (현재는 상상할 수는 없지만 무시하십시오 ...). 다른 도구를 찾을 수 있습니다. 그러나 그것은 현재 우리가 사용하는 OS의 유형이 아닙니다. 그것은 다른 것, 다르게 구성되어 있으며 자체 도구가 필요합니다.

당신이 묻지 않은 가장 중요한 질문은 일자리 '타르'가 적합하지 않은 것입니다.

tar압축은 깨지기 쉽습니다. 비트 단위로 전체 아카이브가 필요합니다. 내 경험상, 그것은 탄력적이지 않습니다. 단일 비트 오류가 발생하여 멀티 파트 아카이브를 사용할 수 없게됩니다. 오류로부터 데이터를 보호하기 위해 중복성을 도입하지 않습니다 (데이터 압축에 대한 질문 중 하나를 이길 수 있음). 데이터가 손상 될 가능성이있는 경우 중복성을 사용하여 오류 검사를 수행하여 데이터를 재구성 할 수 있습니다. 즉, 정의상 최대 압축 상태가 아님을 의미합니다. 필요한 모든 비트의 데이터를 보유하고 최대 의미의 값 (최대 압축)을 전달할 수 없으며 모든 비트의 데이터가 손실 및 복구 (이중화 및 오류 수정)가 가능합니다. 그래서 ... 보관함의 목적은 무엇입니까?tar안정성이 높은 환경과 아카이브를 소스에서 다시 재생할 수있는 경우에 좋습니다. IME, 실제로는 테이프 아카이빙이라는 이름에서 제안한 것보다 더 나쁩니다. 테이프의 단일 비트 오류 (또는 전체 테이프 또는 아카이브의 모든 바이트에서 1 비트를 잃는 테이프 헤드의 더 나쁜 단일 비트 오류)로 인해 데이터를 사용할 수 없게됩니다. 충분한 중복성과 오류 감지 및 수정을 통해 이러한 문제 중 하나를 극복 할 수 있습니다.

그렇다면 ...보고있는 환경에 얼마나 많은 소음과 손상이 있으며 소스를 사용하여 실패한 아카이브를 재생성 할 수 있습니까? 당신이 제공 한 단서로부터 해답은 시스템에 소음이없고 소스가 아카이브를 재생성 할 수 있다는 것입니다. 어떤 경우 tar에는 충분합니다.

tar압축을 사용하면 미리 압축 된 파일에서도 잘 재생되지 않습니다. 이미 압축 된 데이터를 전송하는 경우 ... tar 만 사용하고 압축 단계를 방해하지 않으면 서 CPU 주기만 추가하면됩니다. 즉, 무엇을 보내고 있는지, 왜 그런지 알아야한다는 것을 의미합니다. 당신이 걱정한다면. 이러한 특별한 경우에 신경 쓰지 않으면 tar는 데이터를 충실하게 복사하고 압축하면 데이터를 작게 만드는 데 많은 도움이 되지 않습니다 . 일부 CPU 사이클 외에 큰 문제는 없습니다.


-3

TAR은 테이프 아카이브입니다. 수십 년 동안 사용되어 왔으며 널리 사용되고 지원됩니다. 성숙한 제품이며 기존 요구 사항뿐만 아니라 현재 요구 사항도 처리합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.