[Linux] Linux tar, gz 압축 및 해제
보통 회사에서 서버 OS로 리눅스를 자주 사용하게 될텐데 이 때 tar, tar.gz 파일의 압축과 해제를 많이 이용하게 됩니다. 윈도우 같은 경우 반디집과 같은 프로그램이 있지만 리눅스는 그렇지 않고 리눅스 내의 명령어를 통해 압축과 해제를 진행하게 됩니다. 그래서 이번에는 리눅스에서 tar, tar.gz 파일 압축과 해제에 사용되는 명령어에 대해서 알아보고, 저도 자주 사용하지만 사용할 때마다 구글 검색을 해야해서 이번 기회에 제 블로그에 정리를 해보고자 합니다.
1. tar란 무엇인가?
tar는 여러 개의 파일을 하나의 파일로 묶거나 풀 때 사용하는 명령입니다. “테이프 아카이버(Tape ARchiver)” 의 앞글자들을 조합하여 “tar” 라는 이름으로 명명됩니다.
“테이프 아카이버(Tape ARchiver)” 의 “아카이버(Archiver)” 는 통상적으로 “여러 개의 파일을 하나의 파일로 합치는 프로그램”을 의미합니다. 저장 장치에 파일을 저장하거나 네트워크를 통해 파일을 전송할 때 파일이 여러 개 있으면 관리가 복잡해지기 때문에, 여러 파일을 하나로 합쳐서 처리하기 위한 목적으로 만들어진 프로그램입니다. 그리고 “테이프(Tape)”에서 알 수 있듯이, 과거에 저장 장치로 사용되었던 “테이프(Tape)”에 파일을 백업하기 위해 만들어진 프로그램이라는 것을 유추할 수 있습니다.
보통 리눅스에서 압축 파일을 다룰 때 “tar로 압축 한다”는 표현을 자주 사용하는데, 정확히는 tar 자체는 데이터의 크기를 줄이기 위한 압축을 수행하지는 않습니다. tar는 여러 파일을 하나의 파일로 묶는 용도로 사용됩니다. 대신 tar를 통해 하나로 합쳐진 파일을 gzip 또는 bzip2 방식을 사용하여 압축할 수 있는데, 이 때 gzip 또는 bzip2 명령을 따로 수행하지 않고 tar 명령의 옵션으로 처리할 수 있습니다.
tar 명령을 통해 만들어지는 파일은 보통 .tar
확장자를 사용합니다. 그리고 gzip 또는 bzip2으로 압축된 경우, 파일 뒤에 .gz
, .bz2
확장자를 추가하여 .tar.gz
, .tar.bz2
로 파일 이름을 지정하거나, 드물지만 좀 더 간략하게 tar + gzip 을 tgz
로, tar + bzip2 를 tbz
, tbz2
등으로 지정하기도 합니다.
tar가 널리 쓰이게 된 이유 중 한가지는, 단순 아카이버 기능에 더해, tar로 묶여지기 전 파일들의 속성과 심볼릭 링크, 디렉토리 구조 등을 그대로 가져갈 수 있는 특징 때문입니다. 그래서 최근에는 리눅스용 프로그램, 데이터, 소스 및 라이브러리 등을 배포하는 용도로 많이 사용됩니다.
2. tar로 압축하기
tar -cvf 파일명.tar 폴더명
예시) test라는 폴더를 test.tar로 압축하고자 한다면
-> tar -cvf test.tar test
3. tar 압축 풀기
압축을 풀 때 주의 사항으로는 압축 해제를 하고자 하는 폴더가 있다면 해당 폴더에서 압축 해제를 진행해야 합니다.
tar -xvf 파일명.tar
예시) test.tar 라는 tar 파일 압축을 풀고자 한다면
-> tar -xvf test.tar
4. tar.gz로 압축하기
tar -zcvf 파일명.tar.gz 폴더명
예시) test 라는 폴더를 test.tar.gz로 압축하고자 한다면
-> tar -zcvf test.tar.gz test
5. tar.gz 압축 풀기
압축을 풀 때 주의 사항으로는 압축 해제를 하고자 하는 폴더가 있다면 해당 폴더에서 압축 해제를 진행해야 합니다.
tar -zxvf 파일명.tar.gz
예시) test.tar.gz 라는 파일 압축을 해제하고자 한다면
-> tar -zxvf test.tar.gz
6. tar 명령어 옵션 정리
2~5
까지는 주로 사용되는 tar 명령어의 옵션들을 따로 정리한 것이고 좀 더 세세한 tar 명령어의 옵션은 다음과 같습니다.
옵션 | 설명 |
---|---|
-f | 대상 tar 아카이브 지정 (기본옵션) |
-c | tar 아카이브 생성, 기존 아카이브 덮어 쓰기(파일 묶을 때 사용) |
-x | tar 아카이브에서 파일 추출 (파일 풀 때 사용) |
-v | 처리되는 과정(파일 정보)을 자세하게 나열 |
-z | gzip 압축 적용 옵션 |
-j | bzip2 압축 적용 옵션 |
-t | tar 아카이브에 포함된 내용 확인 |
-C | 대상 디렉토리 경로 지정 |
-A | 지정된 파일을 tar 아카이브에 추가 |
-d | tar 아카이브와 파일 시스템 간 차이점 검색 |
-r | tar 아카이브의 마지막에 파일들 추가 |
-u | tar 아카이브의 마지막에 파일들 추가 |
-k | tar 아카이브 추출 시 기존 파일 유지 |
-U | tar 아카이브 추출전 기존 파일 삭제 |
-w | 모든 진행 과정에 대해 확인 요청 |
-e | 첫 번째 에러 발생 시 중지 |
Comments