보통 리눅스에서 파일을 압축 파일을 다룰 때, "tar로 압축(compress)한다"는 표현을 쓰는 경우가 많은데, 정확히 말하자면 tar 자체는 "데이터의 크기를 줄이기 위한 파일 압축"을 수행하지 않는다. 단지 여러 파일을 하나의 파일로 묶는 용도로 사용될 뿐이다. 대신, tar를 통해 하나로 합쳐진 파일을 gzip 또는 bzip2 방식을 사용하여 압축할 수 있다. (명령어로 수행 가능)
tar가 널리 쓰이게 된 이유 중 한 가지는, 단순 아카이버 기능에 더해, tar로 묶여지기 전 파일들의 속성과 심볼릭 링크, 디렉토리 구조 등을 그대로 가져갈 수 있는 특징 때문이다. 그래서 최근에는 리눅스 용 프로그램, 데이터, 소스 및 라이브러리 등을 배포하는 용도로 많이 사용된다.
0. tar 명령어 옵션 (.zip 파일은 해당 되지 않음)
tar [OPTION...] [FILE]...
-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 : 모든 진행 과정에 대해 확인 요청. (interactive)
-e : 첫 번째 에러 발생 시 중지.
1. 압축하기
- c : compress, tar 아카이브 생성 (기존 아카이브 덮어쓰기)
- v : 처리되는 과정을 나열
- f : 대상 tar 아카이브 지정 (기본 옵션)
tar 압축
$ tar -cvf [파일명.tar] [폴더명]
$ tar -cvf test.tar test_folder
tar.gz 압축
$ tar -zcvf [파일명.tar.gz] [폴더명]
$ tar -zcvf test.tar.gz test_folder
zip 압축
$ zip [파일명.zip] [폴더명]
현재 폴더의 전체를 압축
$ zip test.zip ./*
현재 폴더의 모든 것과 현재 폴더의 하위 폴더들까지 모두 압축
$ zip test.zip -r ./*
2. 압축 해제 하기
- x : extract, tar 아카이브에서 파일 추출
- v : 처리 되는 과정을 나열
- f : 대상 tar 아카이브 지정 (기본 옵션)
tar 압축 해제
$ tar -xvf [파일명.tar]
tar.gz 압축 해제
$ tar -zxvf [파일명.tar.gz]
$ tar -zxvf test.tar.gz
zip 압축 해제
$ unzip [파일명.zip]
$ unzip test.zip
특정 폴더에 압축 해제
$ unzip test.zip -d ./target_folder
4. (참고) 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 * |
참고자료 1 : recipes4dev.tistory.com/146
참고자료 2 : brownbears.tistory.com/161
'Programming > Linux' 카테고리의 다른 글
[Linux] Code Blocks 설치하기 (0) | 2021.07.01 |
---|---|
[Linux] 심볼릭 링크(symbolic link) 설정하기 (0) | 2021.05.25 |
[Linux] Shell Script 활용하여 HEIC 파일 jpg 파일로 변환 시키기 (1) | 2021.04.15 |
[Linux] 리눅스 scp 명령어 사용법 (0) | 2021.03.24 |
[Linux] 리눅스에서 IP 주소 확인 (0) | 2020.11.10 |