tar 아카이브가 텍스트 파일인 10240바이트보다 훨씬 큰 이유는 무엇입니까?

tar 아카이브가 텍스트 파일인 10240바이트보다 훨씬 큰 이유는 무엇입니까?

이 두 가지 질문을 확인했습니다(질문 1,질문 2), 하지만 내 이해에는 도움이 되지 않습니다. file.txt40줄의 문자열이 포함된 파일이 있습니다 Hello World!. ls -l크기는 520바이트로 표시됩니다. 이제 이 파일을 보관 tar -cvf file.tar file.txt하고 다시 보관하면 10240바이트인 ls -l것을 볼 수 있습니다 . file.tar왜?

나는 몇몇 매뉴얼을 읽고 보관과 압축이 서로 다른 것임을 배웠습니다. 하지만 누군가 그것이 어떻게 작동하는지 설명할 수 있습니까?

답변1

tar기본적으로 최소 아카이브 크기는 10240바이트입니다.GNU tar매뉴얼세부 사항(그러나 이것은 GNU에만 해당되는 것은 아닙니다).

GNU를 사용하면 tar다른 블록 크기나 다른 블록 인수 또는 둘 다를 지정하여 이 문제를 줄일 수 있습니다.

tar -cv -b 1 -f file.tar file.txt

관련 메타데이터가 file.txt자신과 함께 저장되기 때문에 결과는 여전히 자신보다 큽니다 . file.tar대부분의 경우 파일 메타데이터(이름, 크기, 타임스탬프, 소유권, 권한)에 대한 블록, 파일 내용, 아카이브 끝 항목에 대한 두 블록이 표시되므로 아카이브되지 않은 최소 아카이브 크기는 0이 포함됩니다. -length 파일은 4개 블록(2,048바이트 및 512바이트 블록 1개)입니다.file.txtfile.txt

답변2

tar단순히 파일을 저장하는 것 외에도 다음 세 가지 작업을 수행해야 합니다.

  1. 메타데이터 저장(파일 이름, 모드, 소유자, 그룹, 날짜...)
  2. 파일의 끝을 표시하십시오.
  3. 아카이브의 끝을 표시하십시오.

tar"테이프 아카이브"를 의미합니다. 테이프의 경우 파일의 끝이 어디인지 확인하는 것이 중요하며 장치는 검색할 때에도 이를 알아야 합니다(테이프가 더 빠르게 이동함). 따라서 테이프의 편의를 위해 tar는 각 파일 끝에 0을 추가하고 아카이브 끝에 또 다른 혈청 세트를 추가합니다. 당신이 지적한 두 번째 질문이 이것을 설명합니다.

을 사용하여 아카이브의 내용을 볼 수 있습니다 hexdump -C archive.tar |less.

관련 정보