TAR 아카이브 형식
tar 아카이브 형식은 파일을 저장하는 안정적인 방법을 제공합니다. 원본 데이터를 바이트 단위로 보존하고 처음에 512바이트 헤더를 추가합니다. 파일 크기도 512바이트 블록에 깔끔하게 맞도록 조정됩니다. 흥미롭게도 헤더에는 오류 감지를 위한 내장 체크섬이 포함되어 있습니다. 표준 tar 유틸리티는 손상된 헤더(및 결과적으로 관련 파일)를 건너뛸 수 있지만 아카이브의 나머지 부분은 계속 처리하므로 손상되지 않은 파일에 계속 액세스할 수 있습니다.
TAR 아카이브 정보 정보
“tape archive"의 약자인 tar 파일 형식은 UNIX 시스템의 tar 유틸리티에 의해 생성됩니다. 백업이나 배포와 같은 작업을 위해 파일을 함께 묶는 아카이브 역할을 합니다. 압축된 아카이브 형식과 달리 tar 파일은 아카이브에 대한 메타데이터와 함께 압축되지 않은 형식으로 tarball이라고도 알려진 여러 파일을 저장합니다. tar 파일 자체는 압축되지 않지만 효율적인 저장 및 전송을 위해 gzip 또는 bzip2와 같은 유틸리티를 사용하여 압축할 수 있습니다.
tar 파일 형식 자체에는 내장 압축이 포함되어 있지 않기 때문에 tar 아카이브는 종종 gzip, bzip2, XZ(7-Zip / p7zip LZMA / LZMA2 압축 알고리즘 활용), Brotli, Zstandard와 같은 외부 유틸리티를 사용하여 압축됩니다. 및 유사한 도구. 이러한 압축은 아카이브 크기를 줄여 더 쉽게 이식하고 효율적인 데이터 백업을 할 수 있도록 도와줍니다. 이 프로세스로 인해 생성된 압축 파일은 tgz, tbz, txz, tzst와 같은 단일 확장자를 갖거나 tar.gz, tar.br, tar.bz2, tar.xz, tar.zst와 같은 이중 확장자를 가질 수 있습니다.
TAR 아카이브 형식의 진화
tar 아카이브 형식은 시간이 지남에 따라 발전해 왔습니다. 1980년대 이후 tar 유틸리티에 추가된 새로운 기능으로 인해 기능 개선을 위한 추가 정보가 포함된 형식 확장이 탄생했습니다. 초기 tar 형식에서는 숫자 필드가 저장되는 방식에 일관성이 부족했지만 이후 버전에서는 이식성을 향상하기 위해 이 문제가 해결되었습니다. 이러한 개선은 1988년 tar 형식에 대한 최초의 POSIX 표준으로 시작되었습니다.
POSIX.1 2001에서는 “확장 tar” 형식(tar.h 또는 pax라고도 함)을 도입했습니다. 이 형식은 가장 유연하며 다른 tar 사양의 기능을 통합합니다. 이를 통해 공급업체는 태그를 사용하여 사용자 정의 기능을 추가할 수 있습니다. 문서에서는 모든 tar 구현이 이 형식을 완벽하게 처리할 수는 없다는 점을 강조하고 있지만 해당 설계에서는 “ustar” 아카이브를 읽을 수 있는 모든 도구가 대부분의 “posix” 아카이브도 읽을 수 있도록 보장합니다. 또한 POSIX.1 2001에서는 tar 아카이브에 대한 이전의 8GB 파일 크기 제한이 제거되었습니다.
TAR 구조
TAR 아카이브의 핵심은 일련의 데이터 블록입니다. 이러한 고정 크기 블록 512바이트는 각각 선형으로 배열됩니다. 아카이브의 끝을 표시하기 위해 0으로 채워진 두 개의 연속 블록이 있습니다.
- 파일 이름(100바이트): 이 항목에 저장된 파일 이름입니다.
그러나 논리적으로 볼 때 TAR 아카이브는 일련의 파일 항목입니다. 각 항목은 여러 블록으로 구성되며 첫 번째 블록은 항상 항목 헤더가 됩니다. 나머지 블록은 실제 파일 내용을 저장합니다.
항목 헤더 내부
항목 헤더는 아카이브 내의 각 파일에 대한 청사진 역할을 합니다. 여기에는 다음 정보가 포함되어 있습니다. - 파일 권한(8바이트): 파일에 접근하기 위한 권한으로, 8진수 문자열로 표현됩니다.
- 소유자 ID(8바이트): 파일 소유자의 숫자로 된 사용자 ID(8진수 형식)입니다.
- 그룹 ID(8바이트): 파일 소유자의 숫자로 된 그룹 ID(8진수 형식)입니다.
- 파일 크기(12바이트): 8진수 형식의 파일 크기입니다.
- 마지막 수정 시간(12바이트): 마지막 파일 수정의 8진수 타임스탬프입니다.
- 체크섬(8바이트): 헤더 데이터의 무결성을 검증하는 데 사용되는 체크섬 값입니다.
- 파일 유형(1바이트): 저장된 파일의 유형(일반 파일, 하드 링크, 심볼릭 링크)을 나타냅니다.
- 링크된 파일 이름(가변 길이): 항목이 링크(하드 또는 기호)인 경우 이 필드는 링크된 파일의 이름을 저장합니다.
이 형식의 이점
- 다용성 - TAR은 단일 아카이브 파일에 여러 파일과 디렉터리를 저장할 수 있는 다용도 형식으로, 다양한 백업 및 배포 요구 사항에 적합합니다.
- 파일 속성 보존 TAR은 권한, 소유권, 타임스탬프와 같은 중요한 파일 속성을 보존하여 보관된 데이터의 무결성과 유용성을 유지합니다.
- 단순성 - TAR 파일의 구조는 간단하고 간단하여 작업 및 처리가 쉽습니다. 이는 TAR 아카이브와 관련된 작업의 프로그래밍 및 자동화를 단순화합니다.
TAR 아카이브 지원 작업
Aspose.ZIP 을 사용하면 사용자가 특정 항목이나 전체 아카이브를 추출할 수 있습니다. .NET용 Aspose.ZIP의 경우 TarArchiveClass를 사용하여 .tar.gz 파일을 연 다음 해당 항목을 반복하여 원하는 위치에 추출할 수 있습니다. Java용 Aspose.ZIP의 경우 TarArchive를 사용하여 .tar.gz 파일을 열고 항목을 추출하는 유사한 접근 방식입니다.
TAR 파일 - 내부 구조
세그먼트 파일은 세그먼트에 대한 원시 데이터를 저장합니다. 다양한 세그먼트 유형이 존재하지만 TAR 파일은 데이터와 대량 세그먼트만 구별합니다. 벌크 세그먼트는 TAR 파일에 “있는 그대로” 직접 저장됩니다.
그러나 데이터 세그먼트는 다른 세그먼트 또는 원시 바이너리 콘텐츠에 대한 참조를 찾기 위해 검사됩니다. 이러한 참조는 단순히 데이터 세그먼트 내의 고유 식별자(UUID) 목록으로 저장됩니다. 참조된 세그먼트는 현재 TAR 파일 내부 또는 외부에 위치할 수 있습니다.
내부 참조는 TAR 파일의 색인을 확인하여 찾습니다. 외부 참조에는 다른 TAR 파일에서 세그먼트를 찾으려면 외부 도구가 필요합니다. 더 빠른 검색을 위해 데이터 세그먼트의 참조 세그먼트 목록이 그래프 파일에 저장됩니다. 이 목록은 검색 프로세스를 최적화하기 위해 순서대로 유지됩니다.
내부 아카이브 구조
- 파일 메타데이터 - tar 아카이브와 유사하게 각 파일은 수정 시간 및 권한과 같은 기본 정보를 저장합니다. 그러나 이 섹션은 유연하며 필요에 따라 ACL(액세스 제어 목록) 또는 EA(확장 속성)와 같은 추가 세부 정보를 생략하거나 포함할 수 있습니다. 데이터 무결성을 보장하려면 일반 파일에 대해 강력한 해시 기능(예: SHA1)을 포함하는 것이 좋습니다.
- 다중 콘텐츠 스트림 - 기존 아카이브와 달리 파일은 내부 데이터 파일 내에 둘 이상의 데이터 스트림을 가질 수 있습니다. 이는 파일과 관련된 확장된 속성이나 리소스 포크를 저장하는 데 유용합니다.
- 헤더 - 내부 인덱스 파일에는 파일 헤더가 포함되어 있으며 내부 데이터 파일 전체에 흩어져 있는 헤더를 미러링합니다. 그러나 별도로 저장되는 경우 인덱스 헤더는 데이터 파일 내 해당 데이터의 시작 위치를 참조해야 합니다. 또한 인덱스의 디렉터리 항목에는 포함된 파일과 내부 파일 인덱스 내의 해당 오프셋이 나열됩니다.
- 중복 메타데이터의 이론적 근거 - 이 설계 선택은 효율적인 데이터 스트리밍/디코딩과 임의 파일 액세스를 모두 보장합니다. 또한 메타데이터가 잘 압축되므로 스토리지 오버헤드가 최소화됩니다. 테스트에 따르면 메타데이터는 일반적으로 저장 공간의 0.3% 미만을 차지하므로 절충할 가치가 있습니다.
- 블록 헤더 - 블록 헤더는 외부 파일과 유사하며 블록 크기 정보와 고유 식별자 시퀀스를 포함합니다.
TAR 사용 예
Aspose.ZIP API를 사용하면 다른 타사 애플리케이션 없이도 애플리케이션에서 아카이브를 추출할 수 있습니다. Aspose.ZIP API는 TAR 아카이브 작업을 위한 TarArchive 클래스를 제공합니다.
Add entries to existing TAR archive via C#
All you need to do is open archive for extraction and add entry to archive .
using (TarArchive archive = new TarArchive(“existing.tar”))
{
archive.CreateEntry("one_more.bin", “data.bin”);
archive.Save(“added.tar”);
}
Delete entries from existing TAR archive via .net
Entries of tar archive can be deleted with similar DeleteEntry methods.
using (var archive = new TarArchive("two_files.tar"))
{
archive.DeleteEntry(0);
archive.Save("single_file.tar");
}
Add files to TAR archive without compression
Tar is a file archival format used to group multiple files and directories into a single archive file without compression , unlike formats like ZIP, RAR and others. To create a tar archive without specifying any compression settings, simply use a TarArchive instance.
using (FileStream tarFile = File.Open("joint.tar", FileMode.Create))
{
FileInfo fi1 = new FileInfo("text.txt");
FileInfo fi2 = new FileInfo("picture.png");
using (TarArchive archive = new TarArchive())
{
archive.CreateEntry("text.txt", fi1);
archive.CreateEntry("picture.png", fi2);
archive.Save(tarFile);
}
}
![]() | ![]() | ![]() |
---|
TAR 아카이브에 대한 추가 정보
사람들이 물어봤어
1. TAR 아카이브란 무엇입니까?
Tape Archive의 약자인 TAR 아카이브는 여러 파일과 디렉터리를 압축하지 않고 단일 아카이브 파일로 묶는 데 사용되는 파일 형식입니다. 일반적으로 Unix 기반 시스템에서 백업 및 배포 목적으로 사용됩니다.
2. TAR 아카이브의 이점은 무엇입니까?
TAR은 대부분의 운영 체제 및 아카이브 프로그램과 호환되어 다양한 플랫폼에서 원활한 데이터 공유 및 교환을 촉진하므로 보편성을 자랑합니다. 단순함은 TAR 아카이브의 간단한 구조에 있으며 파일을 손쉽게 생성, 추출 및 조작할 수 있습니다. 또한 TAR은 gzip 또는 bzip2와 같은 외부 도구를 사용하여 압축할 수 있어 효율성을 제공하므로 사용자는 데이터 전송 중에 파일 크기를 줄이고 저장 공간과 대역폭을 절약할 수 있습니다.
3. TAR 아카이브에는 어떤 제한 사항이 있습니까?
TAR은 Unix 기반 시스템에서 파일을 보관하고 배포하는 데 일반적으로 사용되는 다목적 파일 형식이지만 알아야 할 몇 가지 제한 사항이 있습니다. 첫째, TAR에는 압축 기능이 내장되어 있지 않습니다. 즉, 파일 크기를 줄이려면 gzip 또는 bzip2와 같은 추가 도구가 필요합니다. 둘째, TAR 아카이브는 기본 암호화 기능을 제공하지 않으므로 데이터 보안이 필요한 경우 비밀번호 보호를 위해 외부 도구를 사용해야 합니다. 마지막으로 TAR은 아카이브된 데이터의 무결성에 영향을 미칠 수 있는 원본 파일의 타임스탬프 및 권한과 같은 파일 속성을 보존하기 위한 지원을 제한했습니다.