tar 명령어
tar(Tape Archive) 명령어는 파일과 디렉터리를 아카이브하고 압축하는 데 사용하는 커맨드라인 툴이다. tar는 여러 파일과 디렉터리를 하나의 아카이브 파일로 묶거나 아카이브 파일을 추출할 때 사용한다. 다양한 압축 옵션과 함께 사용할 수 있으며, 대용량 데이터를 관리하거나 백업할 때 매우 유용하다. 특히 소스코드를 .tar.gz 등 압축 파일 형태로 공개하는 경우가 많아 반드시 사용법을 알고 있어야 한다.
아카이브(Archive)는 여러 파일과 디렉터리르 한 덩어리로 만드는 것을 뜻한다. 압축이 아니라 단순히 파일을 붙였다고 생각할 수 있는데, 여기에 gzip, uzip2, xz와 같은 압축을 적용하면 흔히 말하는 압축 파일이 된다.

tar는 다음과 같이 사용한다.
📌 tar 명령어 주요 옵션
- -f : 아카이브 파일의 이름을 지정한다.
- -c : 새로운 아카이브 파일을 생성한다.
- -x : 아카이브 파일에서 개별 파일을 추출한다.
- -t : 아카이브 파일의 내용을 목록으로 만든다.
- -r : 아카이브 파일에 새로운 파일을 추가한다.
- -p : 파일 권한을 그대로 유지하며 추출한다.
- -z : 아카이브 파일을 압축하거나 압축을 해제할 때 gzip(확장자 .tar.gz 또는 .tgz)을 사용한다.
- -j : 아카이브 파일을 압축하거나 압축을 해제할 때 bzip2(확장자 .tar.bz2 또는 .tbz2)을 사용한다.
- -J : 아카이브 파일을 압축하거나 압축을 해제할 때 xz(확장자 .tar.xz 또는 .txz)을 사용한다.
- -v : 진행 과정을 자세히 보여준다.
입력 파일의 목록이 필요할 때는 파일 부분에 공백으로 구분해 파일 목록을 입력한다.
파일 아카이브하고 압축하기
tar 명령어를 사용해서 파일과 디렉터리를 아카이브하고 압축해보자.

passwd 파일과 syslog 파일을 아카이브로 만들어보자. -c 옵션으로 아카이브 파일을 생성하고, -f 옵션으로 아카이브 파일의 이름을 지정한다. 아카이브 할 passwd 파일과 syslog 파일은 뒤쪽에 인자로 넣어준다.

-t 옵션으로 아카이브 파일의 내용을 살펴봅시다. 아카이브 파일로 묶인 파일 목록을 확인할 수 있다.

-r 옵션으로 아카이브 파일에 etc-files 파일을 추가해 보자.

생성한 아카이브 파일을 이번에는 다른 디렉터리에 풀어보자. 먼저 홈 디렉터리로 가서 new-dir이라는 디렉터리를 새로 생성한다. new-dir 디렉터리에 진입해 아카이브 파일을 해제한다. 해제할 때 -x 옵션으로 아카이브 파일 해제를 명령하고, -f로 해제할 아카이브 파일을 지정한다. -v 옵션을 주면 아카이브 파일에서 해제되는 파일들의 이름을 확인할 수 있다.

이번에는 아카이브 파일을 만든 후 압축까지 진행해 보자. 다시 tar-test 디렉터리로 돌아온다. -z 옵션을 추가해 아카이브 한 후 gzip을 사용해 압축한다. gzip으로 압축한 파일의 확장자는 주로 .tar.gz나.tgz를 사용한다.

아카이브 한 후 압축한 파일이 아카이브만 한 파일보다 크기가 작은 것을 확인할 수 있다.
이제 압축한 파일을 해제해 보자. 홈 디렉터리에 tgz-test 디렉터리를 새로 만든다. tgz-test 디렉터리로 가서 -z 옵션을 추가해 압축을 해제한다.

디렉터리 아카이브하고 압축하기
파일 단위뿐만 아니라 디렉터리 단위로도 아카이브와 압축을 진행할 수 있다. tar-test 디렉터리로 돌아와서 앞에서 실습하며 생성한 archive.tar 파일과 compress.tar.gz 파일을 삭제한다.

상위 디렉터리로 가서 tar-test 디렉터리 전체를 아카이브하고 압축한다.

/tmp 디렉터리로 이동해 압축 파일을 풀어보자. 디렉터리를 아카이브 한 경우 디렉터리 자체가 생성되면서 압축이 해제된다.

✔ 정리하자면
- 압축할 때 추천 옵션 : tar -cvzf
- -c : 새로운 tar 아카이브 생성
- -v : 진행 상태를 출력 (verbose 옵션)
- -z : gzip으로 압축
- -f : 파일 이름 지정
- 압축 해제할 때 추천 옵션 : tar -xvzf
- -x : 압축 해제 (extract)
- -v : 진행 상태를 출력 (verbose 옵션)
- -z : gzip으로 압축 해제
- -f : 파일 이름 지정
추가적인 옵션 및 최적화
- --exclude="*.log" : 특정 패턴의 파일 제외 (.log 파일 제외)
- --checkpoint=.100 : 100개 파일마다 진행 상태 표시
- --remove-files : 압축 후 원본 파일 삭제
'프로그래밍 > 리눅스' 카테고리의 다른 글
리눅스 필수 커맨드라인 툴 read (0) | 2025.03.04 |
---|---|
리눅스(Linux) 패키지 관리 시스템에 대해서 (0) | 2025.02.17 |
리눅스 필수 커맨드라인 툴 du (0) | 2025.02.14 |
리눅스 필수 커맨드라인 툴 df (0) | 2025.02.13 |
리눅스 필수 커맨드라인 툴 wc (0) | 2025.02.13 |
댓글