ar, tar, gzip, zip의 차이점은 무엇이며 어느 것을 선택할지 언제 결정해야 합니까?

ar, tar, gzip, zip의 차이점은 무엇이며 어느 것을 선택할지 언제 결정해야 합니까?

여러 파일을 하나로 패키지해야 하는 사용 사례가 있습니다. 위의 모든 명령은 동일한 효과를 갖습니다. 알아요gzip 압축내 파일이지만 공간이 나에게 전혀 문제가 되지 않는다고 가정하면 이 경우 어떤 것을 선택해야 합니까?

이제 압축을 사용하면 네트워크를 통해 파일을 전송할 때 시간이 절약되지만 압축을 풀면 전송 시 절약되는 시간을 보상하는 것보다 더 많은 것이 가능하다고 말할 수 있습니다. 그러면 기본적으로 위의 도구 중 어느 것을 언제 선택할지 선택하고 결정할 수 없습니까?

답변1

여러 개의 파일을 하나의 파일로 패키징해야 하는 사용 사례가 있습니다.

아, 하나 필요해파일파일 수

위의 모든 명령은 동일한 효과를 갖습니다.

별말씀을요! 일부는 아카이버, 일부는 압축기, 일부는 압축 해제기, 일부는 조합입니다.

  • ar: 매우 오래되었습니다. 사용 사례는 다음과 같습니다.매우특정한. 당신은 결코 자신을 이용하고 싶지 않을 것입니다 ar.
  • gzip/ gunzip: 아카이버가 아닙니다. 단일 데이터 스트림을 가져와서 압축할 수 있습니다(또는 gunzip. 당신은 이것을 사용할 수 있습니다함께아카이버와 함께. Gzip은 매우 오래되고 느리고 비효율적입니다. 더 높은 압축률이나 더 높은 속도를 달성하거나 이들의 혼합을 달성하는 대안이 있습니다(예: zstd, lz4)
  • tar: 부족테이프 아카이버;컨텐츠를 압축하는 데 사용할 수도 있는 매우 일반적인 보관 프로그램입니다. 예를 들어:
tar cf archive.tar file1 file2 file3

만들다압축되지 않은file1, file2 및 file3을 포함하는 아카이브입니다. 그러나 reate 명령 z에 옵션을 추가합니다 ( c내가 아는 tar잘못된 구문 ).

tar czf archive.tar.gz file1 file2 file3

내부적으로 tar사용되며 gzip압축된 tar 아카이브를 생성합니다.
또한 선택한 압축기를 통해 결과를 파이프하여 압축된 아카이브를 얻을 수도 있습니다.

tar cf - file1 file2 file3 | gzip > archive.tar.gz # or
tar cf - file1 file2 file3 | zstd > archive.tar.zst # or
tar cf - file1 file2 file3 | lz4 - archive.tar.xz # or
tar cf - file1 file2 file3 | xz > archive.tar.xz

당신은 이해했습니다.
일반적이지만 tar매우 오래된 프로그램과 형식이므로 아쉬운 점이 많습니다. 그러나 Linux 파일 소유권, 권한, 링크, 특수 파일 등을 올바르게 처리합니다.

  • zip압축 아카이버입니다. Windows에서도 잘 작동하지만 파일 권한을 처리할 수 없습니다. 그러므로,백업할 수 없습니다!
  • 7zzip과 마찬가지로 압축된 아카이브 프로그램은 사용자 및 권한 정보를 처리할 수 없습니다. 그러므로,백업할 수 없습니다!
  • mksquashfs일반 파일 시스템처럼 사용할 수도 있고 매우 깔끔하게 압축된 아카이브 파일을 위한 아카이빙 프로그램입니다. 요구 사항에 따라 최신의 매우 빠르거나 매우 강력한 압축을 사용할 수 있습니다.

이제 압축을 사용하면 네트워크를 통해 파일을 전송할 때 시간이 절약되지만 압축을 풀면 전송 시 절약되는 시간을 보상하는 것보다 더 많은 것이 가능하다고 말할 수 있습니다.

그 사람들 말이 맞아요! 속도에 최적화된 최신 압축을 사용하면서둘러요압축 해제를 통해 SSD에서 읽거나 쓰는 것과 비교됩니다. 그리고 네트워크보다 훨씬 빠릅니다(데이터 센터급 네트워크를 고려하지 않는 한).

그러므로 만일속도걱정된다면 빠른 압축기를 사용하는 것을 구입하십시오. 언급했듯이 gzip아마도 2023년에는 압축기 선택이 아닐 것입니다.

tar cf - srces/ | zstd -1 > archive.tar.zst

소스와 바이너리를 혼합하여 사용한 테스트에서 약 3Gb/s의 아카이브 속도가 달성되었습니다(네트워크를 통해 전송할 계획이고 압축기를 병목 현상으로 간주하는 경우). 원래 4.97GB가 1.4GB가 되었습니다. -2대체를 사용하면 -1결과가 10% 더 작아지고 속도가 2.5Gb/s로 감소됩니다. 이는 여전히 대부분의 SATA SSD보다 쓰기 속도가 더 빠릅니다. 이것은 단일 스레드입니다. 모든 CPU 코어를 최대한 활용 하기 위해 zstd -2 -T0내 겸손한 PC는 6.5Gb/s를 수행하지만 zstd -4 -T0여전히 2.5Gb/s이므로 대부분의 네트워크 카드 성능을 뛰어넘으며 크기는 1.2GB로 줄어듭니다.

그래서:

  • 귀하와 동일한 소프트웨어를 사용하지 않는 다른 사람에게 파일을 보낼 수 있도록 파일을 신속하게 보관해야 합니까? tar cv - files… | zstd -4 -T0 > archive.tar.zst그냥 당신이 원하는 것
  • 파일을 보관해야 하지만 귀하와 동일한 소프트웨어를 사용하지 않는 다른 사람에게 보낼 수 있도록 단단히 압축해야 합니까? tar cv - files… | zstd -13 -T0 > archive.tar.zst느리지만 이미 매우 높은 압축률을 제공합니다.
  • 파일을 보관해야 하고 나중에 보관 취소하지 않고 읽고 싶으십니까? mksquashfs files… archive.squashfs -comp=zstd; -Xcompression-level 4크기를 희생하면서 더 빠른 속도를 위해 끝에 추가되었습니다.

결과 archive.tar.zst파일은 최신 GNU tar 를 사용하여 직접 압축을 풀 수 있습니다 . tar xf archive.tar.zstDVD처럼 archive.squashfs직접 설치하고 사용할 수 있습니다 udisksctl loop-setup -f archive.squashfs(즉, 파일을 직접 찾아볼 수 있음).unsquashfs archive.squashfs

관련 정보