오늘 Tar 파일 형식을 사용할 때의 이점은 무엇입니까?
tar 보관 형식은 컴퓨팅 시대에 실제적인 메듀 셀라이지만 여전히 오늘날에도 여전히 많이 사용되고 있습니다. tar 형식을 시작 후 오랫동안 유용하게 만드는 이유는 무엇입니까??
오늘의 질문 및 답변 세션은 Q & A 웹 사이트의 커뮤니티 중심 그룹 인 Stack Exchange의 하위 부문 인 수퍼 유저의 도움으로 이루어졌습니다..
질문
수퍼 유저 MarcusJ는 tar 형식에 대해 궁금해하며 왜이 년 후에도 왜 우리는 여전히 그것을 사용하고 있습니까?
나는 tar이 테이프 아카이브를 위해 제작되었다는 것을 알고 있지만, 오늘날 우리는 동일한 논리적 파일 형식으로 파일을 집계하고 압축하는 아카이브 파일 형식을 가지고 있습니다.
질문 :
- 동일한 데이터 구조에서 집계 및 압축을 수행하는 파일 형식을 사용하는 것과 비교할 때 gzip 또는 bzip2에 캡슐화 된 tar를 사용하는 경우 집계 / 압축 / 압축 해제 단계에서 성능이 저하됩니까? 비교되는 압축기의 런타임이 동일하다고 가정합니다 (예 : gzip 및 Deflate가 유사 함).
- .7z 및 .zip과 같은 다른 파일 형식에는없는 tar 파일 형식의 기능이 있습니까??
- tar는 오래된 파일 형식이기 때문에 새로운 파일 형식이 존재하기 때문에 오늘날 GNU / Linux, Android, BSD 및 기타 유닉스에서 여전히 널리 사용되는 tar (gzip, bzip2 또는 새로운 xz로 캡슐화되었는지 여부)은 왜 tar입니까? 운영 체제, 파일 전송, 프로그램 소스 및 바이너리 다운로드, 때로는 패키지 관리자 형식?
그것은 매우 합리적인 질문입니다. 지난 30 년 동안 컴퓨팅 분야에서 많은 변화가 있었지만 여전히 타르 형식을 사용하고 있습니다. 이야기는 무엇인가??
대답
수퍼 유저 기고 가인 Allquixotic은 tar 형식의 수명과 기능에 대한 통찰력을 제공합니다.
파트 1 : 성능
다음은 두 개의 개별 워크 플로와 이들이 수행하는 작업을 비교 한 것입니다..
디스크에 파일이 있습니다.
blah.tar.gz
압축되지 않은 경우 1GB의 gzip 압축 데이터가 2GB를 차지하므로 압축률은 50 %입니다..아카이브와 압축을 별도로 수행해야한다면 다음과 같이 할 수 있습니다.
tar cf blah.tar 파일 ...
이로 인해
blah.tar
이는 단순한파일 ...
압축되지 않은 형태로.그럼 너는 할거야.
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
디스크에 압축되지 않은 하나 이상의 파일이 들어 있으며 매우 낮은 데이터 구조 오버 헤드가 있습니다. 아마도 파일 크기가 아마도 몇 바이트 모든 파일 데이터의 합보다 클 수 있습니다..너는 달린다 :
타르 xvf blah.tar
이것은
- 2GB의 비 압축 데이터 내용 읽기
blah.tar
그리고타르
파일 사용 권한, 파일 이름, 디렉토리 등에 대한 정보를 포함하는 파일 형식의 데이터 구조.- 2GB의 데이터와 메타 데이터를 디스크에 기록합니다. 데이터 구조 / 메타 데이터 정보를 디스크에 새 파일 및 디렉토리를 적절하게 작성하거나 기존 파일 및 디렉토리를 새 데이터 내용으로 다시 작성하는 작업.
총 데이터 독서 이 프로세스에서 디스크에서 1GB (gunzip 용) + 2GB (tar 용) = 3GB.
총 데이터 WROTE 이 프로세스에서 디스크는 2GB (gunzip 용) + 2GB (tar 용) + 메타 데이터 용 몇 바이트 = 약 4GB.
웨이 2
너는있어.
blah.tar.gz
, 편도 또는 다른 방법.당신은 다음과 같이 결정합니다 :
타르 xvzf blah.tar.gz
이것은
- 1GB의 압축 된 데이터 내용 읽기
blah.tar.gz
, 한 번에 한 블록 씩 메모리에 저장.- 압축 된 데이터를
gzip
메모리에서 압축 풀기 프로그램.- 메모리 버퍼가 가득 차면 파이프 그 데이터는 메모리에서
타르
파일 형식 파서는 메타 데이터 등에 관한 정보와 압축되지 않은 파일 데이터를 읽습니다..- 메모리 버퍼가
타르
파일 파서를 사용하면 압축되지 않은 데이터를 디스크에 쓰거나 파일과 디렉토리를 작성한 다음 압축되지 않은 내용으로 채 웁니다.총 데이터 독서 이 과정에서 디스크에서 1GB의 압축 데이터, 기간.
총 데이터 WROTE 이 프로세스에서 디스크에 2GB의 비 압축 데이터 + 메타 데이터에 대한 몇 바이트 = 약 2GB.
디스크 I / O의 양이 웨이 2 ~이다. 같은 예를 들어, 디스크 I / O가 수행 한 디스크 I / O
지퍼
또는7-Zip
프로그램, 압축비의 차이 조정.압축률을 고려한다면
Xz
캡슐화 할 압축기타르
, 그리고 LZMA2'ed TAR 아카이브를 사용할 수 있습니다.이 아카이브는 가장 진보 된 알고리즘만큼 효율적입니다.7-Zip
:-)2 부 : 기능
타르
파일 메타 데이터 내에 UNIX 사용 권한을 저장하고, 모든 종류의 다른 사용 권한, 심볼릭 링크 등으로 디렉토리를 성공적으로 채우는 것에 대해 매우 잘 알려져 있고 테스트되었습니다. 여러 파일을 포함해야하는 몇 가지 경우가 있습니다. 단일 파일 또는 스트림이지만 반드시 압축하지 않아도됩니다 (압축은 유용하고 자주 사용되지만).3 부 : 호환성
대부분의 Windows 사용자가 .zip 또는 .rar 압축 풀기 프로그램, 대부분의 Linux 설치 또는 다른 프로그램에 액세스 할 수있는 것처럼 대부분의 도구는 "가장 낮은 공통 분모"파일 형식이므로 .tar.gz 또는 .tar.bz2로 소스 또는 바이너리 형식으로 배포됩니다. 가장 기본적인 것조차도, 얼마나 오래되었거나 쓰러져 있더라도 적어도 타르와 건포도에 접근 할 수 있습니다. 심지어 안드로이드 펌웨어는 이러한 도구에 접근 할 수 있습니다..
현대 배포판을 실행하는 대상을 대상으로하는 새로운 프로젝트는 .zar (zz 또는 bzip2보다 압축률이 높은 Xz (LZMA) 압축 형식 사용) 또는 .zz와 같은 .zz와 같은 최신 형식으로 배포 할 수 있습니다. Zip 또는 Rar 파일 형식은 여러 파일을 단일 파일로 캡슐화하기위한 레이아웃을 압축하고 지정합니다..
Opus와 같은 새로운 형식의 온라인 다운로드 상점이나 WebM의 비디오에서 음악을 판매하지 않는 것과 같은 이유로 더 자주 사용되는 .7z는 볼 수 없습니다. 고대 또는 매우 기본적인 시스템을 실행하는 사람들과의 호환성.
설명에 추가 할 것이 있습니까? 의견에서 소리가 나지. 다른 기술에 정통한 Stack Exchange 사용자의 답변을 더 읽고 싶습니까? 전체 토론 스레드를 여기에서 확인하십시오..