Programming/Linux

[Linux] tar / tar.gz / zip 압축 및 압축 해제

꾸준희 2021. 5. 10. 14:29
728x90
반응형

 

출처 : https://recipes4dev.tistory.com/146

 

보통 리눅스에서 파일을 압축 파일을 다룰 때, "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

 

리눅스 tar 명령어 사용법. (Linux tar command) - 파일 압축 및 해제

1. tar 명령어. (Tape ARchiver) tar는 여러 개의 파일을 하나의 파일로 묶거나 풀 때 사용하는 명령입니다. "테이프 아카이버(Tape ARchiver)"의 앞 글자들을 조합하여 "tar"라는 이름으로 명명됩니다. "테이

recipes4dev.tistory.com

참고자료 2 : brownbears.tistory.com/161

 

[Linux] tar, gz, zip 압축 및 압축 해제

압축하기 tar 압축 $ tar -cvf [파일명.tar] [폴더명]   # abc라는 폴더를 aaa.tar로 압축 예시 $ tar -cvf aaa.tar abc tar.gz 압축 $ tar -zcvf [파일명.tar.gz] [폴더명]   # abc라는 폴더를 aaa.tar.gz로 압..

brownbears.tistory.com

 

728x90
반응형