Linux Basic

tar 명령어

별다방체리콕 2024. 1. 17. 13:07

 

 

 

 

 

 

 

 

 

tar

여러 개의 파일을 하나의 파일로 묶거나 풀 때 사용하는 명령어

테이프 아카이버 (Tape ARchiver)의 앞 글자들을 조합하여 tar라는 이름으로 명명

 

 

 

 

 

 

 

 

 

 

 

 

 

저장 장치에 파일을 저장하거나 네트워크를 통해 파일을 전송할 때 파일이 여러 개 있으면 관리가 복잡해지기 때문에,

여러 파일을 하나로 합쳐서 처리하기 위한 목적으로 만들어진 프로그램

보통 리눅스에서 압축 파일을 다룰 때, "tar로 압축한다"는 표현을 쓰는 경우가 많은데,

여러 파일을 하나의 파일로 묶는 용도로 사용될 뿐

tar 자체는 "데이터의 크기를 줄이기 위한 파일 압축"을 수행하지 않음

 

tar를 통해 하나로 합쳐진 파일을 gzip 또는 bzip2 방식을 사용하여 압축할 수 있는데,

gzip 또는 bzip2 명령을 따로 수행하지 않고 tar 명령의 옵션으로 처리할 수 있음

 

 

 

 

 

 

 

 

 

 

 

 

 

 

tar 명령어 주요 옵션

tar 사용 예 명령어 옵션
현재 디렉토리의 모든 파일과 디렉토리를 tar로 묶기 tar cvf T.tar *
대상 디렉토리를 포함한 모든 파일과 디렉토리를 tar로 묶기 tar cvf T.tar [PATH]
파일을 지정하여 tar 아카이브로 묶기 tar cvf T.tar [FILE_1] [FILE_2]
tar 아카이브를 현재 디렉토리에 풀기 tar xvf T.tar
tar 아카이브를 지정된 디렉토리에 풀기 tar xvf T.tar -c [PATH]
tar 아카이브의 내용 확인하기 tar tvf T.tar
현재 디렉토리를 tar로 묶고 gzip으로 압축하기 tar zcvf T.tar.gz *
gzip 으로 압축된 tar 아카이브를 현재 디렉토리에 풀기 tar zxvf T.tar.gz
현재 디렉토리를tar로 묶고 bzip2 로 압축하기 tar jcvf T.tar.bz2 *
bzip2 로 압축된 tar 아카이브를 현재 디렉토리에 풀기 tar jxvf T.tar.bz2
tar 아카이브 묶거나 풀 때 파일 별 진행 여부 확인하기 tar cvfw T.tar *

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

현재 디렉토리의 모든 파일과 디렉토리를 tar로 묶기

"cvf" 옵션에 ""를 사용하여 현재 디렉토리 내 모든 파일과 디렉토리를 tar 아카이브로 묶을 수 있음

$ ls
DIR_1 FILE_1 FILE_2
$ tar cvf T.tar *
DIR_1
FILE_1
FILE_2

 

 

 

 

 

 

 

 

 

 

 

 

대상 디렉토리를 포함한 모든 파일과 디렉토리를 tar로 묶기

"cvf" 옵션에 대상 디렉토리를 지정하여, 지정된 대상 경로를 포함한 모든 파일과 디렉토리를 tar 아카이브로 묶을 수 있음

이때, tar 아카이브에는 대상 디렉토리 경로가 포함되는 것에 주의해야 함

$ ls ./files
DIR_1 FILE_1 FILE_2
$ tar cvf T.tar files
files/
files/DIR_1
files/FILE_1
files/FILE_2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

파일을 지정하여 tar 아카이브로 묶기

"cvf" 옵션에 지정된 파일을 tar 아카이브로 묶을 수 있음

$ ls
DIR_1 FILE_1 FILE_2
$ tar cvf T.tar FILE_1 FILE_2
FILE_1
FILE_2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

tar 아카이브를 현재 디렉토리에 풀기

"xvf" 옵션으로 tar 아카비으를 현재 디렉토리에 풀 수 있음

$ tar xvf T.tar
FILE_1
FILE_2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

tar 아카이브를 지정된 디렉토리에 풀기

"xvf" 옵션과 "-C" 옵션을 조합하여 tar 아카이브를 지정된 디렉토리에 풀 수 있음

$ ls
files T.tar
$ tar xvf T.tar -C ./files/
FILE_1
FILE_2
$ ls ./files
FILE_1 FILE_2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

tar 아카이브의 내용 확인하기

"tvf" 옵션을 사용하여 tar 아카이브의 내용을 확인할 수 있음

tar 아카이브를 풀기 전, 미리 아카이브에 들어 있는 내용을 확인할 때 사용함

$ tar tvf T.tar
-rm-rm-r-- root/root	0 2018-12-28 19:44 FILE_1
-rm-rm-r-- root/root	0 2018-12-28 19:44 FILE_2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

현재 디렉토리를 tar로 묶고 gzip으로 압축하기

"zcvf" 옵션을 사용하여 현재 디렉토리를 tar로 묶은 다음, gzip으로 압축함

$ tar zcvf T.tar.gz *
DIR_1/
FILE_1
FILE_2
$ ls
DIR_1 FILE_1 FILE_2 T.tar.gz

 

 

 

 

 

 

 

 

 

 

 

 

 

 

gzip 으로 압축된 tar 아카이르블 현재 디렉토리에 풀기

"zxvf" 옵션으로, gzip으로 압축된 tar 아카이브를 현재 디렉토리에 풀 수 있음

$ tar zxvf T.tar.gz
DIR_1/
FILE_1
FILE_2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

현재 디렉토리를 tar로 묶고 bzip2로 압축하기

"jcvf" 옵션을 사용하여 현재 디렉토리를 tar로 묶은 다음, bzip2로 압축할 수 있음

$ tar jcvf T.tar.bz2 *
DIR_1/
FILE_1
FILE_2
$ ls
DIR_1 FILE_1 FILE_2 T.tar.bz2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

bzip2으로 압축된 tar 아카이브를 현재 디렉토리에 풀기

"jxvf" 옵션으로, bzip2로 압축된 tar 아카이브를 현재 디렉토리에 풀 수 있음

$ tar jxvf T.tar.gz
DIR_1/
FILE_1
FILE_2

 

 

 

 

 

 

 

 

 

 

 

 

 

tar 아카이브 묶거나 풀 때 파일 별 진행 여부 확인하기 | tar cvfw T.tar * |

tar 옵션에 "W"를 추가하여 tar 아카이브를 묶거나 풀 때 파일 단위로 진행 여부 확인 가능

묶거나 풀려면 "y" 또는 "yes"를 입력하고 엔터를 입력하면 됨

$ tar cvfw T.tar *
add 'DIR_1'?y
DIR_1/
add 'FILE_1'?y
FILE_1
add 'FILE_2'?y
FILE_2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

tar 압축 포캣 지정 오류 gzip: stdin: not in gzip format

 파일 이름 지정으로 인해 사용자에게 혼동을 주는 상황이 발생할 수 있음

bzip2로 압축된 파일에 ".gz" 확장자를 붙이는 경우 사용자는 ".gz" 확장자를 보고 자연스럽게 gzip 압축 방식이라고 생각하여 "tar zxvf" 옵션을 사용하려고 할텐데 이때 아래와 같은 문제가 발생함

(파일 이름이 "T.tar.gz" 이지만 bzip2 방식으로 압축된 파일의 경우)

$ tar zxvf T.tar.gz

gzip: stadin: not in gzip format
tar: child returned status 1
tar: Error is not recoverable: exiting now

 

 

 

 

 

이런 경우 사용자는 파일이 잘못되었다고 판단하여 다른 파일을 찾거나, 해당 파일을 지울 것임

파일을 지우기 전에, 파일의 형식을 확인하면 파일을 다시 찾아다니는 수고스러움을 덜 수 있음

 

 

 

 

 

 

 

 

 

 

리눅스에서 파일의 형식을 확인하는 명령은 "file" 명령이며

아래와 같은 tar 아카이브 파일의 형식을 확인할 수 있음

$ file T.tar
T.tar: POSIX tar archive (GNU)
$ file T.tar.gz
T.tar.gz: gzip compressed data, from Unix, last modifiedL Thu Fev 17 13:06:25 2024
$ file T.tar.bz2
T.tar.bz2: bzip2 compressed data, block size = 900k

'Linux Basic' 카테고리의 다른 글

grep 명령어  (0) 2024.01.23
find 명령어  (0) 2024.01.17
AWK  (0) 2024.01.10
BASH  (1) 2024.01.09
OSI 7 Layer TCP/IP Model  (0) 2024.01.09