본문 바로가기
카테고리 없음

[리눅스] tar 여러 파일 압축 해제

by 쿡노트 2023. 7. 24.
반응형

tar 압축 및 해제

참조로 tar 는 기본적으로 파일을 묶기 용도이므로 tar 압축 후 용량이 줄어들거나 하지 않는다.

tar의 -z 옵션을(gzip 압축) 주면 압축 후 저장 용량이 줄어든다.

tar 묶기

tar -cvf [파일명.tar] [대상 폴더]

tar 묶기 및 gz 압축 (gzip 옵션 적용)

tar -zcvf [파일명.tar.gz] [대상 폴더]

tar -zcvf test.tar.gz /tmp/test/

tar 압축 해제

tar -xvf 파일명.tar

tar -zxvf 파일명.tar.gz

 

압축을 해제할 때 -v를 제외한 tar -zxf 를 사용하면, 압축해제 하는 과정이 출력 되지 않는다. 

압축 해제 과정 출력
압축 해제 과정 미출력

기본적인 tar 압축 및 해제에 관한 내용을 정리했다. 본론으로 여러 파일을 압축 해제하는 방법을 기재한다.
여러 개의 파일을 압축 해제할 때 tar -xvzf ./*.tar.gz (Asterisk) 주면 오류가 발생한다. 파일은 찾는 것 같지만 압축 해제는 안된다.

find 명령어 활용

$ find [대상 경로] -name ["찾을 파일"] -exec sh -c ["실행시킬 명령어"] \;
ex) $ find . -name "*.tar.gz" -exec sh -c "tar zxvf {} " \;

특정(/tmp/test/) 디렉터리의 파일 압축 해제 (명령어 수행한 현재 디렉터리에 압축 해제된다.)

$ find /tmp/test/ -name "*.tar.gz" -exec sh -c "tar zxvf {} " \;

특정(/tmp/test/) 디렉터리의 파일 압축 해제 및 경로 지정 (-C)

$ find /tmp/test/ -name "*.tar.gz" -exec sh -c "tar zxvf {} -C /tmp/test/ " \;

압축 해제 후 압축 원본 파일 삭제 

(!주의가 필요하다. 압축 해제 시 오류 발생으로 (예를 들어 대량 압축 해제 시 DISK 공간 부족) 압축 해제가 덜 된 상태에도 파일 삭제 명령어는 연속적으로 수행된다.) 
$ find /tmp/test/ -name "*.tar.gz" -exec sh -c "tar zxvf {} -C /tmp/test/; rm -f {} " \;

find 날짜 조건 지정

생성된 압축 파일의 날짜 기준 '2023-07-24' 이전 tar.gz 파일 압축 해제

$ find  ! -newerct 2023-07-24 -name "*.tar.gz" -exec sh -c "tar -zxvf {} -C /tmp/test/; rm -f {}; " \;

생성된 압축 파일의 날짜 기준 '2023-07-24' 이후 tar.gz 파일 압축 해제

$ find  -newerct 2023-07-24 -name "*.tar.gz" -exec sh -c "tar -zxvf {} -C /tmp/test/; rm -f {}; " \;

find 명령어 구문 정리

- find 조건 -exec 실행시킬 명령어 ;
- -exec 조건으로 찾은 파일들 대상으로 다음 명령어를 수행하라
- {} : 찾은 파일 의미
- ; : 세미콜론은 exec 종료 구문
- \; : 종료 구문을 쉘이 특수 문자로 인식하지 않도록 \ 붙여준다.

 

감사합니다!

반응형