압축
tar -zcvf filename.tar.gz directoryname
해제
tar -zxvf filename.tar.gz
옵션
각 옵션에 대한 설명은 다음과 같다.
옵션 | 풀네임 | 의미 |
-z | --gzip | gzip 형식으로할 것을 지정 |
-c | --create | 새롭게 압축파일을 만듦 |
-v | --verbose | 처리 결과를 출력 |
-f | --file | 압축 파일의 이름 |
-x | --extract | 압축파일에서 파일을 빼냄 |
추가) 특정 파일을 제외하고 압축/해제하고 싶을 경우
tar 커맨드에 "--exlude 패턴"을 지정하여 특정 파일을 제외하고 처리를 할 수 있다. "패턴"으로는 파일명이나 디렉토리명을 지정할 수 있다. 이때 "*", "?", "[...]" 과 같은 와일드 카드를 사용해서 이름을 지정할 수 있다.
예를 들어, 현재 디렉토리가 다음과 같은 구성으로 되어 있다고 가정하자.
$ tree tar-test/
tar-test/
├── test_1
│ ├── test_1
│ │ ├── test_1.txt
│ │ ├── test_2.txt
│ │ └── test_x.txt
│ ├── test_2
│ │ ├── test_1.txt
│ │ ├── test_2.txt
│ │ └── test_x.txt
│ └── test_x
│ ├── test_1.txt
│ ├── test_2.txt
│ └── test_x.txt
├── test_2
│ ├── test_1
│ │ ├── test_1.txt
│ │ ├── test_2.txt
│ │ └── test_x.txt
│ ├── test_2
│ │ ├── test_1.txt
│ │ ├── test_2.txt
│ │ └── test_x.txt
│ └── test_x
│ ├── test_1.txt
│ ├── test_2.txt
│ └── test_x.txt
└── test_x
├── test_1
│ ├── test_1.txt
│ ├── test_2.txt
│ └── test_x.txt
├── test_2
│ ├── test_1.txt
│ ├── test_2.txt
│ └── test_x.txt
└── test_x
├── test_1.txt
├── test_2.txt
└── test_x.txt
12 directories, 27 files
아래의 커맨드로 test_2를 제외하고 압축할 수 있다. 이름이 "test_2"와 일치하는 파일이나 디렉터리있다면 제외되고 tar 압축 파일이 생성된다.
$ tar --exclude test_2 -zcvf /tmp/test.tar.gz tar-test/
tar-test/
tar-test/test_x/
tar-test/test_x/test_x/
tar-test/test_x/test_x/test_2.txt
tar-test/test_x/test_x/test_1.txt
tar-test/test_x/test_x/test_x.txt
tar-test/test_x/test_1/
tar-test/test_x/test_1/test_2.txt
tar-test/test_x/test_1/test_1.txt
tar-test/test_x/test_1/test_x.txt
tar-test/test_1/
tar-test/test_1/test_x/
tar-test/test_1/test_x/test_2.txt
tar-test/test_1/test_x/test_1.txt
tar-test/test_1/test_x/test_x.txt
tar-test/test_1/test_1/
tar-test/test_1/test_1/test_2.txt
tar-test/test_1/test_1/test_1.txt
tar-test/test_1/test_1/test_x.txt
처리 결과를 보면 알 수 있듯, 「tar-test/test_2/」「tar-test/test_1/test_2/」「tar-test/test_x/test_2/」 디렉토리 밑으로는 제외됐다. 하지만, 각 디렉토리에 있는 "test_2.txt"라는 텍스트 파일은 포함됐다.
따라서 이 텍스트 파일 또한 제외하고 싶은 경우 앞에서 설명했던 와일드 카드를 쓰면 된다. 다음과 같이 "--exclude "text_2*"로 지정하면, 이름 문자열이 test_2으로 시작하는 파일이나 디렉토리가 압축 파일 대상에서 제외된다.
$ tar --exclude "test_2*" -zcvf /tmp/test.tar.gz tar-test/
tar-test/
tar-test/test_x/
tar-test/test_x/test_x/
tar-test/test_x/test_x/test_1.txt
tar-test/test_x/test_x/test_x.txt
tar-test/test_x/test_1/
tar-test/test_x/test_1/test_1.txt
tar-test/test_x/test_1/test_x.txt
tar-test/test_1/
tar-test/test_1/test_x/
tar-test/test_1/test_x/test_1.txt
tar-test/test_1/test_x/test_x.txt
tar-test/test_1/test_1/
tar-test/test_1/test_1/test_1.txt
tar-test/test_1/test_1/test_x.txt
또한 다른 와일드 카드인 "[...]"를 이용해보면, 다음과 같이 이름이 「test_1」 혹은 「test_2」로 시작되는 파일명이나 디렉토리가 제외되어 커맨드가 실행된다.
$ tar --exclude "test_[12]*" -zcvf /tmp/test.tar.gz tar-test/
tar-test/
tar-test/test_x/
tar-test/test_x/test_x/
tar-test/test_x/test_x/test_x.txt
그리고 여러 개의 패턴을 사용하여 여러가지 파일을 동시에 제외시킬 수 있다. 다음과 같이 단순히 --exclude 패턴을 몇 개 더 추가하면 된다.
$ tar --exclude "test_1/test_*/test_[12]*" --exclude "test_x/test_*/test_x*" -zcvf /tmp/test.tar.gz tar-test/
tar-test/
tar-test/test_2/
tar-test/test_2/test_2/
tar-test/test_2/test_2/test_2.txt
tar-test/test_2/test_2/test_1.txt
tar-test/test_2/test_2/test_x.txt
tar-test/test_2/test_x/
tar-test/test_2/test_x/test_2.txt
tar-test/test_2/test_x/test_1.txt
tar-test/test_2/test_x/test_x.txt
tar-test/test_2/test_1/
tar-test/test_2/test_1/test_2.txt
tar-test/test_2/test_1/test_1.txt
tar-test/test_2/test_1/test_x.txt
tar-test/test_x/
tar-test/test_x/test_2/
tar-test/test_x/test_2/test_2.txt
tar-test/test_x/test_2/test_1.txt
tar-test/test_x/test_x/
tar-test/test_x/test_x/test_2.txt
tar-test/test_x/test_x/test_1.txt
tar-test/test_x/test_1/
tar-test/test_x/test_1/test_2.txt
tar-test/test_x/test_1/test_1.txt
tar-test/test_1/
tar-test/test_1/test_2/
tar-test/test_1/test_2/test_x.txt
tar-test/test_1/test_x/
tar-test/test_1/test_x/test_x.txt
tar-test/test_1/test_1/
tar-test/test_1/test_1/test_x.txt
참고자료
'IT > 기초 지식' 카테고리의 다른 글
[Figma] Figma에서 자주 사용하는 단축키 모음 (0) | 2022.06.03 |
---|---|
[Linux] 좋은 쉘 스크립트 쓰는 팁 (0) | 2022.05.26 |
프록시(Proxy)란? (3) | 2022.05.15 |
Google Chrome이 추천하는 프라이버시 샌드 박스 기술의 하나인, Privacy Budget이란 무엇인가? (0) | 2022.05.08 |
[Azure] Azure Machine Learning Compute이란? (0) | 2022.04.15 |