tar
로 대용량을 압축해야 했던 적이 있다면 , 얼마나 고통스러울 수 있는지 알게 될 것입니다. 종종 매우 느리게 진행되며 Ctrl 키를 누르게 됩니다. + C 작업을 끝내고 잊어버리십시오. 그러나 tar가 사용할 수 있는 몇 가지 다른 도구가 있으며 이는 오늘날의 다중 스레드 CPU를 활용하고 tar 보관 속도를 높이는 좋은 방법입니다. 이 기사는 Linux에서 아카이브를 압축할 때 tar가 모든 코어를 사용하도록 하는 방법을 보여줍니다.
도구 이해 및 설치
여기서 문제의 세 가지 주요 도구는 pigz, pbzip2 및 pxz입니다. 도구 간에 약간의 미묘한 차이가 있지만 gzip, bzip2 및 xz 간에 차이점이 있습니다. 각각의 순서로 압축 수준이 증가합니다. 즉, gzip으로 압축된 아카이브가 xz로 압축된 아카이브보다 크지만 gzip은 자연스럽게 xz보다 시간이 덜 걸립니다. bzip2는 중간 어딘가에 있습니다.
각 도구의 이름을 시작하는 "p"는 "병렬"을 의미합니다. 병렬화는 수년에 걸쳐 점점 더 관련성이 높아진 것입니다. 즉, 모든 CPU 코어에 걸쳐 있는 것입니다. 64코어 및 128스레드에 도달할 수 있는 AMD의 Epyc 및 Threadripper 라인과 같은 CPU를 사용하면 어떤 애플리케이션에서 이를 사용할 수 있는지 이해하는 것이 중요합니다. 이러한 압축 기능이 주요 후보입니다.
도구를 설치하려면 저장소로 이동하면 됩니다.
sudo apt install pigz pbzip2 pxz # Debian/Ubuntu sudo dnf install pigz pbzip2 pxz # Fedora sudo pacman -Sy pigz pbzip2 pxz # Arch Linux
이 도움말에서는 일관성을 위해 pxz에 중점을 둡니다. pigz에 대한 이 튜토리얼을 확인할 수 있습니다.
Tar로 아카이브 압축
tar의 구문은 매우 간단합니다. 디렉토리를 압축하려면 다음과 같은 명령을 사용할 수 있습니다.
tar czf linux-5.10-rc3.tar.gz linux/ tar cjf linux-5.10-rc3.tar.bz2 linux/ tar cJf linux-5.10-rc3.tar.xz linux/
첫 번째는 gzip을 사용하고 두 번째는 bzip2를 사용하며 세 번째는 xz를 사용합니다. 파일 이름과 디렉터리는 수행하는 작업에 따라 다르지만 GitHub에서 Linux 커널을 내 '/home' 디렉터리로 가져왔고 이를 사용하겠습니다. 이제 time
으로 해당 명령어를 시작하겠습니다. 시간이 얼마나 걸리는지 보려면 앞에 명령을 내리세요. 또한 xz가 이 시스템에서 내 CPU의 가장 높은 비율을 차지하는 것으로 나열되어 있지만 하나의 코어만 100%로 고정하고 있음을 알 수 있습니다.
그리고 보시다시피 오래된 i7-2600이 Linux 5.10-rc3을 압축하는 데 매우 오랜 시간이 걸렸습니다(약 28분).
여기에서 이러한 병렬 압축 도구가 유용합니다. 큰 파일을 압축하고 더 빨리 끝내고 싶다면 이 도구를 충분히 추천할 수 없습니다.
Tar와 함께 병렬 압축 도구 사용
--use-compression-program
과 함께 압축 프로그램을 사용하도록 tar에 지시할 수 있습니다. 옵션을 사용하거나 -I
의 좀 더 간단한 명령 플래그를 사용할 수 있습니다. . 이러한 도구에 대한 구문의 예는 다음과 같습니다.
tar -I pigz -cf linux-5.10-rc3.tar.gz linux/ tar -I pbzip2 -cf linux-5.10-rc3.tar.bz2 linux/ tar -I pxz -cf linux-5.10-rc3.tar.xz linux/
그것을 테스트하고 내 시스템이 내 CPU의 8개 스레드 모두에 액세스하여 Linux 커널을 압축하는 데 얼마나 걸리는지 알아보겠습니다. 내 htop
을 볼 수 있습니다. pxz로 인해 100% 사용량으로 고정된 모든 스레드를 보여주는 판독값입니다.
그 아카이브를 압축하는 데 훨씬 적은 시간(약 7분!)이 소요되었음을 알 수 있습니다. 멀티태스킹이 가능했습니다. 백그라운드에서 실행 중인 가상 머신이 있고 현재 웹 브라우징을 하고 있습니다. Linux 커널 하드웨어 스케줄러는 개인 항목에 필요한 것을 제공하므로 pxz
시스템에서 실행 중인 다른 항목 없이 명령을 실행하면 더 빨리 완료할 수 있습니다.
pigz, pbzip2 및 pxz로 압축 수준 조정
압축 수준을 pxz에 전달하여 파일을 더 작게 만들 수도 있습니다. 이렇게 하려면 더 많은 RAM, CPU 및 시간이 필요하지만 실제로 작은 파일을 가져와야 하는 경우에는 그만한 가치가 있습니다. 다음은 두 명령과 그 결과를 나란히 비교한 것입니다.
압축률은 그다지 높지 않고 시간도 그만한 가치가 없지만 모든 메가바이트가 중요하다면 여전히 훌륭한 옵션입니다.
tar를 사용하여 아카이브를 압축하기 위해 모든 코어를 사용하는 이 가이드를 즐겼기를 바랍니다. Linux용 새 PC를 구축하는 방법, Apt를 마스터하고 Apt 전문가가 되는 방법, Raspberry Pi에 Arch Linux를 설치하는 방법과 같은 다른 Linux 콘텐츠를 확인하십시오.