Computer >> 컴퓨터 >  >> 체계 >> Linux

Tar와 함께 모든 CPU 코어를 사용하여 아카이브를 압축하는 방법

Tar와 함께 모든 CPU 코어를 사용하여 아카이브를 압축하는 방법

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
Tar와 함께 모든 CPU 코어를 사용하여 아카이브를 압축하는 방법

이 도움말에서는 일관성을 위해 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%로 고정하고 있음을 알 수 있습니다.

Tar와 함께 모든 CPU 코어를 사용하여 아카이브를 압축하는 방법 Tar와 함께 모든 CPU 코어를 사용하여 아카이브를 압축하는 방법

그리고 보시다시피 오래된 i7-2600이 Linux 5.10-rc3을 압축하는 데 매우 오랜 시간이 걸렸습니다(약 28분).

Tar와 함께 모든 CPU 코어를 사용하여 아카이브를 압축하는 방법

여기에서 이러한 병렬 압축 도구가 유용합니다. 큰 파일을 압축하고 더 빨리 끝내고 싶다면 이 도구를 충분히 추천할 수 없습니다.

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% 사용량으로 고정된 모든 스레드를 보여주는 판독값입니다.

Tar와 함께 모든 CPU 코어를 사용하여 아카이브를 압축하는 방법 Tar와 함께 모든 CPU 코어를 사용하여 아카이브를 압축하는 방법

그 아카이브를 압축하는 데 훨씬 적은 시간(약 7분!)이 소요되었음을 알 수 있습니다. 멀티태스킹이 가능했습니다. 백그라운드에서 실행 중인 가상 머신이 있고 현재 웹 브라우징을 하고 있습니다. Linux 커널 하드웨어 스케줄러는 개인 항목에 필요한 것을 제공하므로 pxz 시스템에서 실행 중인 다른 항목 없이 명령을 실행하면 더 빨리 완료할 수 있습니다.

Tar와 함께 모든 CPU 코어를 사용하여 아카이브를 압축하는 방법

pigz, pbzip2 및 pxz로 압축 수준 조정

압축 수준을 pxz에 전달하여 파일을 더 작게 만들 수도 있습니다. 이렇게 하려면 더 많은 RAM, CPU 및 시간이 필요하지만 실제로 작은 파일을 가져와야 하는 경우에는 그만한 가치가 있습니다. 다음은 두 명령과 그 결과를 나란히 비교한 것입니다.

Tar와 함께 모든 CPU 코어를 사용하여 아카이브를 압축하는 방법 Tar와 함께 모든 CPU 코어를 사용하여 아카이브를 압축하는 방법 Tar와 함께 모든 CPU 코어를 사용하여 아카이브를 압축하는 방법

압축률은 그다지 높지 않고 시간도 그만한 가치가 없지만 모든 메가바이트가 중요하다면 여전히 훌륭한 옵션입니다.

tar를 사용하여 아카이브를 압축하기 위해 모든 코어를 사용하는 이 가이드를 즐겼기를 바랍니다. Linux용 새 PC를 구축하는 방법, Apt를 마스터하고 Apt 전문가가 되는 방법, Raspberry Pi에 Arch Linux를 설치하는 방법과 같은 다른 Linux 콘텐츠를 확인하십시오.