Linux 터미널에서 Tar로 파일을 보관하는 방법

09/30 2015
Tar 아카이브 내용
대부분의 데스크탑 환경은 아카이브의 내용을 표시할 수 있습니다. 다음은 LXDE(Raspberry Pi의 기본 데스크톱)에서 tarball을 두 번 클릭한 결과입니다.

대부분의 사람들은 Zip 파일을 생성, 전송 또는 수신하는 데 꽤 익숙할 것입니다. Zip은 파일 모음을 가져와 Zip 아카이브 파일에 저장하고 프로세스에서 데이터를 압축합니다.

파일의 내용을 저장할 뿐만 아니라 개체와 관련된 추가 정보인 모든 메타데이터도 저장합니다. 파일의 경우 수정 시간, 소유자 및 권한, 물론 각 파일의 이름이 포함됩니다.

아카이브의 압축을 풀면 이 모든 정보가 추출되어 원본 파일 세트를 그대로 재생성하므로 매우 편리합니다!

아카이브에는 여러 가지 용도가 있지만 가장 많이 사용되는 것은 다운로드용 파일 집합을 묶는 것입니다. 단일 파일은 처리하기 쉽고 압축하면 다운로드 속도가 빨라지고 백업을 생성합니다. Zip은 오랫동안 사용되어 왔기 때문에 누구나 사용할 수 있고 모든 OS에서 처리할 수 있습니다. 그럼에도 불구하고 Zip에는 여러 가지 단점이 있습니다.

주요 문제는 현대 표준에 비해 압축률이 좋지 않다는 것입니다. 지난 25년 동안 압축 기술은 발전했으며 Zip에 대한 개선이 있었지만 더 나은 대안이 있습니다.

Zip의 또 다른 단점은 파일에 보관하기 위한 것이지만 때로는 다른 장치나 서비스로 데이터를 보내야 한다는 것입니다.

타르 이해

Linux 및 Mac OS X를 포함한 Unix 계열 운영 체제의 표준 보관 프로그램은 Tar입니다. Tar는 원래 테이프 드라이브(Tape ARchive)에 백업을 저장하는 데 사용되었기 때문에 그렇게 불립니다.

타르

아카이브된 모든 데이터를 표준 출력으로 보내고 많은 테이프 드라이브에 이미 하드웨어 압축이 내장되어 있기 때문에 기본적으로 데이터를 압축하지 않기 때문에 Zip과 다른 방식으로 작동합니다.

압축 코드가 없다는 것이 단점처럼 보일 수 있지만 사실은 편리합니다. Tar는 외부 압축 프로그램을 통해 데이터를 파이프할 수 있으므로 Tar 프로그램이 개발되었을 때 존재하지 않았던 압축기를 포함하여 원하는 모든 압축기를 사용할 수 있습니다.

압축 프로그램은 하나의 파일 또는 데이터 스트림에서 작동하고 하나의 압축된 파일 또는 스트림을 생성하므로 작업을 아카이브와 압축의 두 부분으로 나눕니다. 이것이 더 복잡해 보일 수 있지만 Tar는 세부 사항 자체를 완벽하게 처리할 수 있습니다.

foo 라는 디렉토리가 있다고 가정해 보겠습니다 . 우리는 종종 tarball이라고 하는 아카이브를 만들고 싶습니다. 다음 옵션 중 하나를 수행할 수 있습니다.

tar cf foo.tar foo

tar czf foo.tar.gz foo

tar cjf foo.tar.bz2 foo

tar cJf foo.tar.xz foo

c 옵션 은 Tar 프로그램에 우리가 아카이브를 생성하고 있음을 알려주는 반면, f 는 주어진 이름을 사용하여 파일에 아카이브를 저장하고 있음을 알려줍니다. 따라서 첫 번째 명령은 foo.tar 라는 압축되지 않은 아카이브를 만듭니다 .

후속 명령은 사용할 특정 유형의 압축을 Tar에 알려주는 추가 옵션을 추가합니다. z 는 gzip 압축을 사용하고 j 는 bzip2 압축을 사용하며 J 는 xz 압축을 사용합니다. (대소문자 주의!)

Tar 인수 및 옵션

명령을 더 읽기 쉽게 만드는 이러한 인수의 긴 버전도 있지만 우리 대부분은 게으르고 입력하기 더 짧은 버전을 사용합니다. 그러나 다음과 같은 경우에도 이 명령줄을 사용할 수 있습니다.

tar --create --gzip --file foo.tar.gz foo

파일 확장자는 필수는 아니지만 사람들이 정확히 어떤 유형의 아카이브인지 쉽게 확인할 수 있도록 하는 규칙입니다. 시스템 자체는 이 모든 것을 자체적으로 처리할 수 있으므로 도움이 필요하지 않습니다. 아카이브의 압축을 푸는 것은 단순히 c를 x 로 바꾸 거나 --create를 --extract 로 바꾸는 문제입니다 . 그러나 압축 유형을 제공할 필요는 없습니다. Tar가 알아내기 때문입니다.

tar xf foo.tar.gz

추가할 수 있는 또 다른 옵션은 Tar가 수행하는 작업을 표시하기 위해 v 또는 --verbose 입니다.

타르볼을 받았다면 압축을 풀지 않고 그 안에 무엇이 있는지 확인하고 싶을 수 있습니다. 아카이브, 특히 백업을 만든 경우 이를 사용하기 전에 올바른지 확인하는 것이 좋습니다. 테스트 옵션은 무결성을 확인하고 아카이브의 내용을 나열합니다.

tar tvf foo.tar.gz

이것이 주요 Tar 옵션이지만 프로그램에는 새 아카이브를 만드는 대신 기존 아카이브에 파일을 추가하는 A 또는 --concatenate 와 같은 더 많은 옵션이 있습니다.

미래 보장

Tar는 압축을 다른 프로그램으로 전달하기 때문에 함께 제공되는 모든 새로운 압축 형식을 처리할 수 있다고 언급했습니다. gzip, bzip2 및 xz에 대해 이 작업을 자동으로 수행하는 명령줄 옵션이 있지만 누군가 새 압축기를 제시하면 어떻게 될까요?

sdc - super-duper 압축기와 같은 것을 말합니까? 압축되지 않은 tarball을 만든 다음 sdc를 사용하여 압축할 수 있지만 이는 낭비적이고 느립니다. 대신 파이프를 사용하십시오.

타르 C 푸 | sdc >foo.tar.sdc

unsdc foo.tar.sdc | 타르 xv

여기서는 Tar와 함께 --create 옵션만 사용합니다. 대상이 없기 때문에 Tar는 아카이브 데이터를 표준 출력으로 보낸 다음 sdc 압축기 프로그램으로 파이프됩니다. 두 번째 명령은 프로세스를 역순으로 수행하여 아카이브의 압축을 풀고 추출을 위해 Tar로 보냅니다.

  • 이 기사는 Linux, 오픈 소스 개발, 배포판 릴리스 등에 대한 지식을 높이는 최고의 잡지인 Linux Format에서 TechRadar에 제공되었습니다. 여기에서 Linux 형식의 인쇄 또는 디지털 버전을 구독하십시오 (새 탭에서 열림).