왜 단일 파일을 tar합니까?


101

우리 회사에서는 로컬 개발 데이터베이스 스냅 샷을 db.dump.tar.gz파일 로 다운로드 합니다. 압축은 의미가 있지만 tarball에는 단일 파일 ( db.dump) 만 포함 됩니다.

단일 파일을 보관할 필요가 .tar.gz있습니까? 아니면 일반적인 관용구입니까? 왜 안돼 .gz?


5
제 생각에는 그것은 단지 관습의 문제입니다. 사람들이 gz 확장자를 가진 파일을 볼 때 기본 생각은을 사용하는 것 tar -zxvf입니다. 그러나 파일 이름을보고 .tgz확장자 가없는 것을 보는 사람들에게는 db 덤프 파일을 gzip으로 압축하는 것이 좋습니다. 압축 알고리즘을 자세히 알지 못하기 때문에 tar가 db 덤프와 같은 스파 스 파일을 압축하는지 확실하지 않지만 일반 텍스트 파일의 경우 파일의 직접 gzip은 taring first 및 gzip보다 크기가 매우 작습니다. ing 파일
MelBurslan

3
단일 파일을 변경하면 파일의 시작과 끝에 몇 가지 메타 데이터 블록이 추가됩니다. 실제 파일 데이터는 tar를 통해 그대로 압축기로 전달됩니다. 따라서 큰 파일의 경우 일반 압축과 taring의 크기 차이는 무시할 수 있습니다.
plugwash

과거에는 다양한 압축 방법을 시도 할 때 .tar.gz다른 대부분의 일반적인 방법보다 우수하다는 것을 알았 습니다. 나는 그것이 단지 우월하다고 생각 .tar하지만 그것이 단지보다 낫다면 기억할 수 없다 .gz. 아이러니하게도 Window의 .cab형식은 내가 시도한 방법 중 가장 좋았는데 예상치 못한 일이었습니다.
Pharap

@Pharap tar은 압축 알고리즘이 아니며, 아카이빙 형식입니다
gardenhead

1
@gardenhead 잘 작동하지 않는 이유를 설명합니다.
Pharap

답변:


163

사용의 장점 .tar.gz대신는 .gz점이다

  • tar보다 많은 메타 데이터 (UNIX 권한 등)를 저장합니다 gzip.
  • 여러 파일을 저장하기 위해 설정을보다 쉽게 ​​확장 할 수 있습니다.
  • .tar.gz 파일은 매우 일반적이며, gzip 파일 만 있으면 일부 사용자가 당황 할 수 있습니다. (cf. MelBurslans 의견 )

사용 오버 헤드 tar도 매우 작습니다.

실제로 필요하지 않은 경우 여전히 단일 파일을 tar하지 않는 것이 좋습니다. (예 : 직접 압축 된 하나의 파일에 액세스 할 수있는 많은 유용한 도구가 있습니다 zcat, zgrep- 또한 기존 등 bzip2xz).


35
메타 데이터 측면을 고려하지 않았습니다. 아주 좋은 지적
gardenhead

5
를 보면 .gz첫 번째 본능은 tar -zxf foo.gz입니다. gzip이라는 명령도 기억하는 데 몇 초가 더 걸립니다.
bgStack15

2
@ bgStack15 FWIW 당신은 z(또는 -그 문제에 대한) 필요하지 않습니다 , 대부분의 현대 tar는 파일의 압축을 풀어야 할 필요가 자동으로 감지됩니다.
drewbenn

2
기본적으로 gzip원래 파일 이름과 타임 스탬프가 저장됩니다. -N압축을 풀 때 옵션을 사용하여 복원 할 수 있습니다.
로스 릿지

@RossRidge 덕분에 원본 파일 이름에 대한 텍스트를 다시 제거했습니다.
jofel

63

실제로 질문의 절반 만 요구합니다. 다른 질문은 "왜 gzip으로 tar 파일을 압축합니까?"입니다. 대답은 gzip파일을 더 작게 만드는 것이 아닙니다 (대부분의 경우).

tar:

  • 파일 이름 및 기타 메타 데이터 저장 : 모드, 소유자 ID, 그룹 ID, 파일 크기, 수정 시간
  • 체크섬을 저장합니다 (헤더에만 해당).

gzip:

  • 원래 파일 이름을 저장할 수 있지만 선택 사항입니다
  • 원본 데이터에 대한 CRC-32 체크섬이 있습니다
  • 파일을 압축합니다

단지와 함께 tar당신은 확신 할 수없는 데이터가 손상되지 않았습니다. 단지와 함께 gzip당신은 사용자 / 그룹 ID, 수정 시간 및 수없는 원본 파일 이름을 복원 할 수 없습니다.

조합은 서로 다른 기능을 보완하기 때문에 개별 명령 / 형식이 제공하는 것보다 더 강력 합니다 .


그것을 명확히 해 주셔서 감사합니다! tar위키 백과 페이지를 읽을 때 체크섬이 전체 파일에 대한 것임을 의미하는 설명을 잘못 이해했습니다.
gardenhead

이것은 정답처럼 느껴집니다. 또한 몇 가지 이유를 추가하겠습니다. 동의하는 경우 편집하고 싶을 수도 있습니다. 1) 관리자에게는 .tar 또는 .gz 이상의 .tgz에 대한 추가 비용이 없습니다. 모두 하나의 명령입니다 .2) 관리자는 여러 가지 이유로 많은 파일을 백업, 복사, 재배치, 이동합니다. DB 백업은이 중 하나 일뿐입니다. 하나 이상의 파일을 백업하든 동일한 워크 플로우, 도구 및 명령을 사용할 수 있습니다. 파일이 하나만있는 경우 gzip 명령 구문을 사용하여 특수한 이유는 무엇입니까?
Dewi Morgan

30

압축 된 텍스트 파일 만 사용하면 상당히 큰 이점이 있습니다 . less,, zgrep등의 명령 줄 도구를 사용하여 내용에 직접 액세스 할 수 있습니다 zcat.


흥미로운 점이지만 문제는 데이터베이스 스냅 샷에 관한 것입니다.
underscore_d

9
@underscore_d 모든 데이터베이스 덤프 (대부분 mysql 및 pgsql)는 텍스트 덤프입니다. 부분적으로 덤프를 손상시키는 것이 발생하면 더 잘 구할 수 있기 때문에 부분적으로 일반적인 도구를 사용하여 복원을 사전 처리 할 수 ​​있기 때문입니다 (sed , awk, perl 등) 필요한 경우. 즉, 바이너리 덤프보다 더 안정적이고 유용합니다. 단점은 텍스트 덤프가 더 커지는 경향이 있으며 (디스크 공간이 저렴하고 압축률이 좋은) 관리가 느리고 복원이 트랜잭션으로 랩핑되는 경우에는 복원 속도가 훨씬 느려집니다.
cas

1
압축 해제 기의 출력을 일반 공구에 간단히 배관하는 것보다이 공구의 장점은 무엇입니까?
코드 인 카오스

21

나는 사람들이 tar없이 gzip / bzip2 / xz 를 사용할 수 있다는 것을 깨닫지 못할 것이라고 말할 것입니다 . 압축 및 아카이빙이 단일 형식 ( ZIP , RAR 등) 으로 통합되는 것이 일반적인 DOS / Windows 배경에서 비롯된 것일 수 있습니다 .

메타 데이터 저장 또는 파일 추가 기능으로 인해 일부 상황에서 tar를 사용하면 약간의 이점이있을 수 있지만 단점도 있습니다. 일반 gzip / bzip2 / xz 파일을 사용하면 압축 해제 된 데이터를 디스크에 파일로 저장하지 않고도 압축 해제 된 데이터를 다른 도구 (예 : 데이터베이스)에 바로 파이프 할 수 있습니다. 타르볼로 이것은 더 어렵다.


2
GNU tar를 사용하면 -O 스위치를 사용하여 stdout으로 출력하므로 훨씬 어렵다고 말할 수는 없습니다 !
hyde

5
첫 번째 단락은 tgz확장명을 사용하는 파일에 대해 그럴듯 해 보입니다 . 그러나 OP의 경우를 사용 tar.gz합니다.이 가상의 전 Win / DOS 사용자가 필자와 같은 경우 그러한 파일을 볼 때 가장 먼저 말하는 것은 '왜 2 개의 확장자가 있습니까?'입니다. 그런 다음 Google에서 Google에 신속하게 답변을 얻습니다. 구체적으로 설명하면 tar압축이 다릅니다. ;-)
underscore_d

17

사용하여 만들 수있는 중요한 차이가 tar어떤 상황에서 중요한 것은 그의 대답에 언급 @jofel은 "메타 데이터"외에, tar 파일 이름을 기록 아카이브에 있습니다. 압축을 풀면 아카이브의 이름에 관계없이 원래 파일 이름을 얻습니다 .

귀하의 경우 tar 아카이브와 파일에 포함 된 파일의 이름은 db.dump.tar.gzdb.tar이지만 tar 파일의 이름을로 바꾸십시오 20-Apr-16.dump.tgz. 와 함께 untar tar xvfz하면 얻을 수 db.dump있습니다. 비교를 위해 압축을 풀면가 20-Apr-16.dump.gz있습니다 20-Apr-16.dump. (편집 : 주석에서 지적했듯이 gzip은 파일 이름을 기록하지만 압축을 풀 때 일반적으로 사용되지는 않습니다). tar아카이브는 하위 디렉토리에 압축을 푼 파일을두고 상대 경로 이름을 포함 할 수 있습니다.

유스 케이스는 이러한 종류의 파일 이름 지속성이 필요한지 또는 원하는지 또는 실제로 바람직하지 않은지를 나타냅니다. 그러나 압축에 관계없이 tar아카이브는 일반 파일과 다르게 이동합니다.


6
gzip은 원래 파일 이름도 기록합니다.
psusi

8
예. 이름은 gzip 헤더에서 선택 사항입니다. 명령의 스트리밍 출력을 압축하면 이름이 없으며, 대부분의 도구는 기본적으로 이름을 복원하지 않습니다 (예 : gzip --name압축 해제시 명시 적으로 사용해야 함 ). 파일 이름 지속성을 얻기 위해 tar를 사용할 필요는 없습니다.
Miles

이것을 지적 해 주셔서 감사합니다, 나는 그것을 몰랐습니다. 여전히 이것이 기본 동작이 아니기 때문에 요점은 다음과 같습니다. tar 형식으로 파일을 배포 하면 수신자의 개입없이 원래 파일 이름 (및 상대 경로)이 유지됩니다. 압축 된 파일을 배포해도 그렇지 않습니다.
Alexis

8

다른 모든 답변 외에도 최근에는 하나의 파일 만 예상되는 스크립팅 상황에 부딪 쳤지 만 이전 직원은 하나 이상의 파일이 생성 될 가능성이있는 스크립트를 작성했습니다. 따라서 파일이 지워지고 bzipped 된 다음 전송 및 확장되었습니다.

프로세스가 4.3GB 파일을 만들 때까지 커졌을 때 롤오버하여 .dump 파일 외에 .dump.001 파일을 만들었습니다. 모든 스크립트가 계속 작동했습니다.

사전 예방적인 시스템 관리자 게으름입니다!


2

타임 스탬프 (다운로드에서 쉽게 간과 됨)를 유지하기 위해 단일 파일을 tar로 복사하려고합니다. 파일 권한과 소유권은 덜 중요합니다. 다운로드 는 제대로 통합되지 않은 시스템에 적용되는 용어입니다.

tar 여부에 관계없이 파일을 압축하여 다운로드 속도를 높이고 디스크 공간 부족을 피하는 것이 표준 관행입니다.


-1

Tar은 공식 파일 시스템에 기록되지 않은 여러 파일에 특히 유용합니다. 어떤 이유로 든 하나의 파일 만 작성되는 경우 실제 결과는 없습니다. 파티션이나 파일 시스템에 관계없이 .tar.gz를 / dev / sdx에 직접 추가 할 수 있습니다. 테이프 일 수도 있습니다.

스크립트 또는 프로세스가 헤리티지 코드에서 복사 되었기 때문에 일반적으로 수행됩니다. 물론 파일이 하나만 있으면 tar를 만들 필요는 없지만 여러 파일을 향상시킬 수있는 여지는 남아 있습니다.

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