문제

주로 Windows 개발자로서, 아마도 Linux 커뮤니티에서 문화적 인 것을 놓치고있을 것입니다. 그러나 그것은 항상 나를 혼란스럽게 만들었습니다.

파일을 먼저 다운로드 할 때 .tar 그러면 아카이브 지퍼. 왜 2 단계 프로세스인가? 그렇지 않습니다 지핑 파일 그룹화를 달성 하시겠습니까? 내가 알지 못하는 다른 혜택이 있습니까?

도움이 되었습니까?

해결책

bzip 그리고 gzip 파일 그룹이 아닌 단일 파일에서 작업하십시오. 평범한 늙음 zip (그리고 pkzip) 파일 그룹에서 작동하며 아카이브 개념을 내장합니다.

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

다른 팁

중요한 차이점은 두 종류의 아카이브의 본질에 있습니다.

TAR 파일은 일부 헤더와 파일 내용을 연결하는 것 이상이지만 GZIP 및 BZIP2는 타르 볼에서 전체 연결에 적용되는 스트림 압축기입니다.

Zip 파일은 일부 헤더와 함께 개별적으로 압축 된 파일을 연결 한 것입니다. 실제로 Deflate 알고리즘은 Zip과 GZIP 모두에서 사용되며 적절한 이진 조정을 통해 GZIP 스트림의 페이로드를 가져 와서 적절한 헤더 및 사전 항목이있는 ZIP 파일에 넣을 수 있습니다.

이것은 두 개의 다른 아카이브 유형이 다른 트레이드 오프를 가지고 있음을 의미합니다. 소형 파일의 대규모 모음의 경우 스트림 압축기가 사전 주파수를 구축하기 위해 더 많은 데이터를 갖기 때문에 더 많은 중복 정보를 확보 할 수 있기 때문에 TAR에 이어 스트림 압축기가 이어지면 일반적으로 ZIP보다 압축 비율이 높아집니다. 반면에, ZIP 파일의 (파일 길이 예방) 오류는 압축 데이터에 영향을받은 파일 만 손상시킵니다. 일반적으로 스트림 압축기는 중간 스트림 오류에서 의미있게 복구 할 수 없습니다. 따라서 ZIP 파일은 아카이브의 일부가 여전히 액세스 할 수 있으므로 손상에 더 탄력적입니다.

아무도 다른 사람이 GNU의 현대 버전을 언급 한 것은 이상합니다. tar 번들링 할 때 압축 할 수 있습니다.

tar -czf output.tar.gz directory1 ...

tar -cjf output.tar.bz2 directory2 ...

지원 된 경우 선택한 선택의 압축기를 사용할 수도 있습니다.-c'(stdout, 또는 stdin) 및'-d'(압축 압력) 옵션 :

tar -cf output.tar.xxx --use-compress-program=xxx directory1 ...

이를 통해 대체 압축기를 지정할 수 있습니다.

[추가: 당신이 추출하는 경우 gzip 또는 bzip2 압축 파일, GNU tar 이를 자동 감지하고 적절한 프로그램을 실행합니다. 즉, 사용할 수 있습니다.

tar -xf output.tar.gz
tar -xf output.tgz        # A synonym for the .tar.gz extension
tar -xf output.tar.bz2

그리고 이것들은 제대로 처리됩니다. 비표준 압축기를 사용하는 경우 추출을 할 때는 지정해야합니다.

분리의 이유는 선택된 답변에서와 같이 의무 분리 때문입니다. 무엇보다도 사람들이 ''를 사용할 수 있음을 의미합니다.cpio'파일을 포장하는 프로그램 (대신 파일을 포장합니다 tar) 그런 다음 선택한 압축기를 사용합니다 (한 번에 한 번, 선호하는 압축기는 pack, 나중에 그랬습니다 compress (이것은 훨씬 더 효과적이었습니다 pack), 그리고 gzip 전임자 주위에 반지를 실행했으며 전적으로 경쟁력이 있습니다. zip (유닉스로 포팅되었지만 기본이 아닙니다), 지금은 bzip2 내 경험에 따르면 일반적으로 10-20%의 이점이 있습니다. gzip.

[추가: 누군가는 그들의 대답에 주목했다 cpio 재미있는 컨벤션이 있습니다. 그것은 사실이지만 GNU까지 tar 관련 옵션이 있습니다 ( '-T -'), cpio 주어진 디렉토리 아래에있는 모든 것을 보관하고 싶지 않을 때 더 나은 명령이었습니다. 실제로 보관 된 파일을 정확하게 선택할 수 있습니다. 의 단점 cpio 당신뿐만 아니라 ~할 수 있었다 파일을 선택하십시오 - 당신 가졌다 그들을 선택합니다. 아직 한 곳이 있습니다 cpio 점수; 중간 저장소없이 한 디렉토리에서 다른 디렉토리 계층 구조로 현장 사본을 수행 할 수 있습니다.

cd /old/location; find . -depth -print | cpio -pvdumB /new/place

덧붙여서, '-depth'옵션 ON find 이 맥락에서 중요합니다. 디렉토리 자체에 권한을 설정하기 전에 디렉토리의 내용을 복사합니다. 이 답변에 추가하기 전에 명령을 확인했을 때, 나는 일부 읽기 전용 디렉토리 (555 권한)를 복사했습니다. 사본을 삭제하러 갔을 때, 나는 이전에 디렉토리에 대한 권한을 완화해야했다.rm -fr /new/place'끝날 수 있습니다. 없이 -depth 옵션, cpio 명령이 실패했을 것입니다. 나는 정리를 할 때만 이것을 다시 기억했다. ]

재미있는 점은 제작자가 기대하지 않는 행동을 얻을 수 있다는 것입니다. tar 그리고 gzip. 예를 들어, 타르 파일을 gzip 할뿐만 아니라 타르가있는 파일도 생성 할 수 있습니다. files.gz.tar (이것은 기술적으로 길에 더 가까워 질 것입니다 pkzip 공장). 또는 일부 암호화와 같이 다른 프로그램을 파이프 라인에 넣을 수 있으며, 임의의 Tarring, Gziping 및 암호화 순서를 선택할 수 있습니다. 암호화 프로그램을 작성한 사람은 자신의 프로그램이 어떻게 사용될 것인지 약간의 아이디어를 가질 필요가 없으며, 표준 입력에서 읽고 표준 출력에 쓰기 만하면됩니다.

UNIX 세계에서 대부분의 응용 프로그램은 한 가지 작업을 수행하고 잘 수행하도록 설계되었습니다. UNIX, GZIP 및 BZIP2에서 가장 인기있는 지퍼 유틸리티는 파일 압축 만 수행합니다. 타르는 파일을 연결합니다. TAR의 출력을 압축 유틸리티에 배치하면 어느 한 소프트웨어에 과도한 복잡성을 추가하지 않고 필요한 작업이 필요합니다.

그것이 널리 퍼져있는 또 다른 이유는 Tar와 Gzip이 거의 전체 *nix 설치 기지에 있기 때문입니다. 나는 이것이 아마도 가장 큰 이유 일 것이라고 믿는다. RAR 또는 7Z의 우수한 루틴에 관계없이 지원이 내장되어 있기 때문에 ZIP 파일이 Windows에서 매우 널리 퍼져있는 이유이기도합니다.

GNU Tar는 또한 한 명령 (한 단계)에서 이러한 파일을 만들/추출 할 수 있습니다.

  • 아카이브 만들기 :
  • tar -cfvj destination.tar.bz2 *.files
  • tar -cfvz destination.tar.gz *.files

  • 아카이브 추출 : (-c 부품은 선택 사항입니다. 현재 디렉토리로 기본값)

  • tar -xfvj archive.tar.bz2 -C destination_path
  • tar -xfvz archive.tar.gz -C destination_path

이것들은 내가 수년간 Linux와 최근 Nexenta (Opensolaris)에서 기억하기 위해 노력한 것입니다.

나는 당신이 이것에 대해 더 많은 역사적 맥락을 찾고 있다고 생각합니다. 원래 zip은 단일 파일 용이었습니다. TAR는 여러 파일을 단일 파일에 배치하는 데 사용됩니다. 따라서 Tarring과 Zipping은 두 단계 프로세스입니다. 오늘날 여전히 그렇게 지배적 인 이유는 누구나 추측하는 것입니다.

Wikipedia에서 tar_ (file_format)

컴퓨팅에서 TAR (테이프 아카이브에서 파생 된)은 파일 형식 (아카이브 비트 스트림 유형 형식)과 이러한 파일을 처리하는 데 사용되는 프로그램의 이름입니다. 이 형식은 POSIX.1-1988 이상 POSIX.1-2001에 의해 표준화되었습니다. 처음에는 원시 형식으로 개발되었으며, 백업 목적으로 테이프 백업 및 기타 순차 액세스 장치에 사용되는 것은 이제 사용자 및 그룹과 같은 파일 시스템 정보를 보존하는 동시에 파일 모음을 하나의 큰 파일로 수집하는 데 일반적으로 사용됩니다. 권한, 날짜 및 디렉토리 구조.

유닉스가 타르 가므로 타르는 유닉스입니다

제 생각에는 이유가 있습니다 아직 사용 tar 오늘날 UNIX 접근 방식이 처음부터 완벽하게 바로 만들었던 (아마도 드문) 사례 중 하나입니다.

아카이브 제작과 관련된 단계를 자세히 살펴보면 다른 작업의 분리가 여기에서 발생하는 방식이 유닉스 철학 최선을 다해 :

  • 하나의 도구 (tar 여기에 이름을 주려면) 혁신 전문화 어느 파일, 디렉토리 및 기호 링크 선택 모두 타임 스탬프, 소유자 및 1 바이트 스트림에 대한 권한과 같은 관련 메타 데이터.

  • 그리고 다른 임의의 상호 교환 가능한 도구 (gzip bz2 xz 변신하는 몇 가지 옵션 만 이름을 지정합니다 어느 바이트의 입력 스트림은 다른 (희망적으로) 더 작은 출력 스트림으로 입력합니다.

그러한 접근 방식과 접근 방식은 개발자뿐만 아니라 사용자에게도 몇 가지 이점을 제공합니다.

  • 확장 성커플을 허용합니다 tar ~와 함께 어느 이미 존재하는 압축 알고리즘 또는 어느 압축 알고리즘은 아직 개발되지 않았습니다 없이 내부 작업에서 무엇이든 변경해야합니다 tar 조금도.

    모든 새로운 "Hyper-Zip-utra"또는 Whater 압축 도구가 나오자 마자 이미 새로운 종을 수용 할 준비가되었습니다. tar.

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

    필요를 방지합니다 재창조 소유권, 권한, 타임 스탬프 등 보관 구현의 휠 다시 반복하여 ~을 위한 모든 새로운 아카이빙 도구는 개발 중에 많은 (불필요하게 소비 된) 시간을 절약 할뿐만 아니라 동일하게 보장합니다. 신뢰할 수 있음 모든 새로운 응용 프로그램에 대해.

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

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

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

타르 역사적인 이유로 주로 인기가 있습니다. 쉽게 사용할 수있는 몇 가지 대안이 있습니다. 그들 중 일부는 타르만큼 오랫동안 주변에 있지만 여러 가지 이유로 타르를 능가 할 수 없었습니다.

  • CPIO (Alien Syntax; 이론적으로 더 일관성이 있지만 사람들은 자신이 알고있는 것을 좋아합니다. Tar는 우세했습니다)
  • AR (오래 전부터 인기, 이제 라이브러리 파일을 포장하는 데 사용)
  • SHAR (자체 추출 쉘 스크립트, 모든 종류의 문제가 있었으며 인기가 없었습니다.
  • zip (라이센스 문제로 인해 많은 유니폼에서 쉽게 구할 수 없었습니다)

TAR의 주요 장점 (및 단점)은 파일 헤더 나 컨텐츠의 중앙 디렉토리가 없다는 것입니다. 따라서 수년 동안 파일 크기의 제한으로 어려움을 겪지 않았습니다 (아카이브 내부의 파일에 대한 8GB 제한이 몇 년 전에 해결 된이 10 년까지).

tar.gz (또는 그 문제에 대한 Ar.z)의 단점 중 하나는 단일 파일을 추출하고 아카이브 내용을 나열하기 위해 전체 아카이브를 압축해야한다는 것입니다. .

GZIP 및 BZIP2는 단순히 아카이버 소프트웨어가 아닌 압축기입니다. 따라서 조합. 모든 파일을 묶으려면 Tar-Software가 필요합니다.

지퍼 자체와 Rar Aswell은 두 프로세스의 조합입니다.

일반적으로 *nux 세계에서 파일 번들은 타르 볼로 배포 된 다음 선택적으로 gzipped됩니다. GZIP는 타르 또는 지퍼가하는 파일을 수행하지 않는 간단한 파일 압축 프로그램입니다.

한 번에 Zip은 Symlinks, Mixed Case Files 등과 같이 UNIX TAR 및 UNIX 파일 시스템이 정상으로 간주되는 것들 중 일부를 제대로 처리하지 못했습니다. 이것이 바뀌 었는지 모르겠지만 TAR을 사용하는 이유입니다.

tar = 그룹 파일 1 파일로 그룹화합니다

gzip = 파일을 지퍼합니다

그들은 프로세스를 2로 나눕니다.

Windows 환경에서 Zip을 수행하는 Winzip 또는 Winrar를 사용하는 데 더 많이 사용될 수 있습니다. 이 소프트웨어의 zip 프로세스는 파일을 그룹화하고 지핑하지만 그 프로세스를 보지 못합니다.

Mac 사용자가 디스크 이미지를 좋아하는 것과 같은 이유로 : 물건을 보관 한 다음 전달, UP-/다운로드 또는 이메일 등을 전달하는 데 정말 편리한 방법입니다.

ZIPS IMHO보다 사용하기 쉽고 휴대용이 더 쉽습니다.

Altos-Xenix Days (1982)에서 우리는 Tar (테이프 아카이버)를 사용하여 5 1/4 플로피 또는 스트리밍 테이프에서 파일을 추출 하고이 미디어에 복사하기 시작했습니다. 기능은 Backup.exe 및 Restore.exe 명령과 DOS 5.0 및 6.22의 보충제와 매우 유사하며, 하나만 맞을 수없는 경우 여러 미디어를 파악할 수 있습니다. 단점은 여러 미디어 중 하나에 문제가 있다면 모든 것이 쓸모가 없다는 것입니다. TAR 및 DD는 UNIX System III에서 비롯되었으며 아마도 유닉스와 유사한 OS '가있는 표준 릴리스 유틸리티로 남아 있습니다.

Tar는 파일 형식 일뿐 만 아니라 테이프 형식입니다. 테이프는 데이터를 비트 단위로 저장합니다. 각 스토리지 구현은 사용자 정의였습니다. Tar는 디스크에서 데이터를 가져 와서 다른 사람들이 사용자 정의 프로그램없이 검색 할 수있는 방식으로 테이프에 저장할 수있는 방법이었습니다.

나중에 압축 프로그램이 나왔고 *닉스는 여전히 여러 파일이 포함 된 단일 파일을 작성하는 한 가지 방법 만 가지고있었습니다.

TAR.GZ 트렌드로 계속 된 것은 관성 일 뿐이라고 생각합니다. PKZIP는 압축과 보관으로 시작하여 한 번의 압축으로 시작했지만 DOS 시스템은 일반적으로 테이프 드라이브가 부착되지 않았습니다!

tar_ (file_format)의 Wikipedia에서

컴퓨팅에서 TAR (테이프 아카이브에서 파생 된)은 파일 형식 (아카이브 비트 스트림 유형 형식)과 이러한 파일을 처리하는 데 사용되는 프로그램의 이름입니다. 이 형식은 POSIX.1-1988 이상 POSIX.1-2001에 의해 표준화되었습니다. 처음에는 원시 형식으로 개발되었으며, 백업 목적으로 테이프 백업 및 기타 순차 액세스 장치에 사용되는 것은 이제 사용자 및 그룹과 같은 파일 시스템 정보를 보존하는 동시에 파일 모음을 하나의 큰 파일로 수집하는 데 일반적으로 사용됩니다. 권한, 날짜 및 디렉토리 구조.

Windows 개발자로서 이해할 수 있습니다 Tarballs 이상해 보인다. 단어 tar 테이프 아카이브를 나타냅니다. 릴 투 릴 테이프 레코더를 생각해보십시오.

Windows World에서는 일반적으로 다음과 함께 설치됩니다. setup.exe 또는 install.exe 레지스트리에서 모든 종류의 마법사를 작동시키고 디렉토리 생성 및 설치 .dll (동적 링크 라이브러리) 파일.

Linux에서 우분투에서 특히 내 경험을 통해 패키지 관리자는 응용 프로그램을 작성하고 설치하는 것을 관리합니다. 대부분의 시간. 우분투에서 개발자는 패키지를 만듭니다 .deb (우분투가 기반으로하는 데비안). 설치하려는 기본 구문 .deb 이다:

sudo apt install <package_name>

이것은 사용자에게 비교적 간단하지만 개발자가 .deb 패키지 및 연관 PPA.

개발자에게 더 쉬운 방법은 타르볼을 만드는 것입니다. 그런 다음 설치 부담은 최종 사용자가 공유합니다. 그들은 반드시:

  • Tarball을 다운로드하십시오 (일반적으로 끝납니다 .tar.gz).
  • 소스 코드를 디렉토리로 압축합니다.
  • 소스 코드를 컴파일하십시오 (이익 세계를위한 Windows에서는 들어 보지 않음).
  • 미래에 반복해야 할 경우를 대비하여 한 일을 적어두기를 바랍니다. apt 백업 할 수있는 데이터베이스 (Windows 설치 프로그램 목록 생각).

다른 답변은 이미 당신이 요청한 다른 질문에 대해 말하면, 당신은 타르볼을 만들고 동시에 데이터를 압축 할 수 있습니다. 두 개의 패스 프로세스가 필요하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top