리눅스 유닉스 계열의 대표적인 압축 확장자인 tar, tar.gz, tgz 파일에 대하여 생성 또는 해제 방법을 알아보자.

우선 tar 명령어에서 가장 많이 사용하는 옵션에 대해 알아 보자

-c 파일또는 폴더의 내용을 tar로 묶음
-p 파일또는 폴더의 권한을 저장
-v 압축 또는 해제 과정을 화면에 표시
-f 파일이름 지정
-C 압축파일 해제 경로 지정
-x tar 압축 해제
-z gzip으로 압축 또는 해제

기본적인 압축 명령어

– tar로 압축 방법
#>tar -cvf “/저장할경로/압축파일명.tar” “압축할 폴더 또는 압축할 파일 경로”

– tar.gz로 압축 방법
#>tar -zcvf “/저장할경로/압축파일명.tar.gz” “압축할 폴더 또는 압축할 파일 경로”

– tgz로 압축 방법
#>tar -zcvf “/저장할경로/압축파일명.tgz” “압축할 폴더 또는 압축할 파일 경로”

– 특정파일 또는 폴더 제외하고 tar로 압축 방법
#> tar -cvf “/저장할경로/압축파일명.tar” –exclude “제외할 폴더 또는 제외할 파일 경로” “압축할 폴더 또는 압축할 파일 경로”

기본적인 압축 해제 명령어

-tar 압축파일 해제
#>tar -xvf “압축파일명.tar”

– tar.gz 압축파일 해제
#>tar -zxvf “압축파일명.tar.gz”

   !! tar 명령어에서 z 옵션이 없을경우 gzip -d “압축파일명.tar.gz”로  해제후 tar 압축파일 해제

– tar.bz2 압축파일 해제
#>tar -jxvf “압축파일명.tar.bz2”

– tgz 압축파일 해제
#>tar -zxvf “압축파일명.tgz”

지정한 위치에 압축파일 해제

-C 옵션을 이용하여 경로를 지정해주면 된다.
#> tar -xvzf “압축파일명.tar.gz” -C /home/test/

절대경로로 압축된 압축파일 압축해제 경로 변경
예) #>tar -cvf test.tar /home/test/*

#>pax -rv -s,/home/test,/home/test2, -f test.tar

tar를 이용한 파일 폴더 소유권 그대로 복사하기

리눅스 및 유닉스 계열에서 파일을 복사할 때 cp(카피) 명령어를 이용하여 복사하면
파일 또는 폴더의 사용자 및 그룹의 소유권이 유지가 되지 않는 문제가 발생한다.
또한 파일사이즈가 클경우 복사가 제대로 되지 않는경우도 허다하다 

이러한 문제를 해결하기위한 방법으로 tar명령어를 이용한 압축과 동시에 해제를 통하여
파일 또는 폴더의 소유권을 그대로 유지하면서 복사하는 방법을 알아보도록 하자.

– 동일 서버내에서 다른 위치로 복사할 경우
(현재 위치한 폴더의 파일 또는 폴더를 복사할 경우 “복사할 파일 또는 폴더 경로” 대신 “.” 명령어를 적용한다.

#> tar -cvfp – “복사할 파일 또는 폴더 경로” | (cd “파일 복사 경로” ; tar xvfp -)
#> tar -cvfp – . | (cd “파일 복사 경로” ; tar xvfp -)

– 다른 시스템(A -> B)으로 복사할 경우

#> tar -cvfp – “복사할 파일 또는 폴더 경로” | id@B시스템 아이피 (cd “파일 복사 경로” ; tar -xvfp -)