반응형
리눅스나 유닉스 환경에서 파일을 압축할 때 특정 디렉토리나 파일을 제외하고 싶다면 --exclude 옵션이 필수입니다. 하지만 문법을 정확히 지키지 않으면 무시되고 전부 압축되는 경우가 많으니 주의가 필요해요.
기본적인 사용법과 실수하기 쉬운 포인트들을 정리해 드릴게요.

1. 기본 사용법
가장 기본적인 형태는 --exclude='패턴'을 사용하는 것입니다.
Bash
tar -cvfz [파일명.tar.gz] [압축할_대상] --exclude='제외할_패턴'
- -c: 압축 생성 (create)
- -v: 과정 출력 (verbose)
- -f: 파일 이름 지정 (file)
- -z: gzip 압축 사용
예시: 특정 폴더 제외하기
my_project 폴더를 압축하되, 용량이 큰 node_modules 폴더는 빼고 싶을 때:
Bash
tar -cvfz project.tar.gz ./my_project --exclude='node_modules'
2. 여러 개를 제외하고 싶을 때
두 가지 방법이 있습니다.
- 옵션 반복 사용:
-
Bash
tar -cvfz backup.tar.gz . --exclude='log' --exclude='temp' - 제외 리스트 파일 이용: 제외할 목록이 너무 많다면 별도의 텍스트 파일(예: exclude_list.txt)에 작성한 뒤 -X 옵션을 씁니다.
-
Bash
tar -cvfz backup.tar.gz . -X exclude_list.txt
3. ⚠️ 주의해야 할 핵심 포인트 (꿀팁)
- 옵션의 위치: 일반적으로 tar 명령어 맨 뒤에 --exclude를 붙이는 것이 가장 안전합니다. 소스 경로 뒤에 위치시켜야 정확히 작동하는 경우가 많습니다.
- 경로 끝에 슬래시(/) 금지:
- --exclude='folder/'라고 쓰면 인식을 못 할 수 있습니다. 폴더명만 깔끔하게 --exclude='folder'라고 적어주세요.
- 와일드카드 활용:
- 특정 확장자만 빼고 싶다면 --exclude='*.log'와 같이 사용할 수 있습니다.
4. 요약표
| 상황 | 명령어 예시 |
| 단일 폴더 제외 | --exclude='folder_name' |
| 특정 파일 제외 | --exclude='config.php' |
| 특정 확장자 제외 | --exclude='*.mp4' |
| 여러 개 제외 | --exclude='dir1' --exclude='dir2' |
실제로 압축을 풀지 않고도 목록만 미리 확인해서 제외가 잘 되었는지 보려면 -tf 옵션을 사용해 보세요.
tar -tf project.tar.gz
여러개의 exclude 폴더와 파일 패턴으로 tar 실행 예시 .
tar cvfz of_abc_api.tar.gz --exclude='abc_api/.venv' --exclude='abc_api/venv' --exclude='abc_api/app/venv' --exclude='abc_api/.git' --exclude='*.pyc' abc_api/