우분투에서 특정 경로와 그 하위 경로를 모두 포함하여 압축하는 방법
tar 명령어 사용
가장 일반적인 방법은 tar 명령어를 사용
bash
# 기본 압축 (gzip)
tar -czf 압축파일명.tar.gz /압축할/경로/
# 예시
tar -czf backup.tar.gz /home/user/documents/
다양한 압축 옵션
bash
# gzip 압축 (.tar.gz)
tar -czf archive.tar.gz /path/to/directory/
# bzip2 압축 (.tar.bz2) - 더 높은 압축률
tar -cjf archive.tar.bz2 /path/to/directory/
# xz 압축 (.tar.xz) - 가장 높은 압축률
tar -cJf archive.tar.xz /path/to/directory/
# 압축 없이 아카이브만 (.tar)
tar -cf archive.tar /path/to/directory/
유용한 옵션들
bash
# verbose 모드로 진행상황 표시
tar -czvf archive.tar.gz /path/to/directory/
# 특정 파일/폴더 제외
tar -czf archive.tar.gz --exclude='*.log' --exclude='temp/' /path/to/directory/
# 현재 디렉토리에서 상대경로로 압축
cd /path/to/parent/
tar -czf archive.tar.gz directory/
# 심볼릭 링크도 포함
tar -czhf archive.tar.gz /path/to/directory/
zip 명령어 사용
bash
# 기본 zip 압축
zip -r archive.zip /path/to/directory/
# 압축률 조정 (1-9, 9가 최고)
zip -r -9 archive.zip /path/to/directory/
# 특정 파일 제외
zip -r archive.zip /path/to/directory/ -x "*.log" "*/temp/*"
실용적인 예시
bash
# 홈 디렉토리의 Documents 폴더 백업
tar -czf ~/backup_documents_$(date +%Y%m%d).tar.gz ~/Documents/
# 로그 파일 제외하고 웹사이트 디렉토리 압축
tar -czf website_backup.tar.gz --exclude='*.log' --exclude='cache/' /var/www/html/
# 현재 프로젝트 폴더 압축 (숨김파일 포함)
tar -czf project_backup.tar.gz ./
옵션 설명:
- -c: 새 아카이브 생성
- -z: gzip 압축 사용
- -j: bzip2 압축 사용
- -J: xz 압축 사용
- -f: 아카이브 파일명 지정
- -v: verbose 모드 (진행상황 표시)
- -r: 재귀적으로 하위 디렉토리 포함
tar 명령어에서 여러 확장자를 제외하려면 --exclude 옵션을 여러 번 사용
방법 1: --exclude 옵션 여러 번 사용
bash
tar -czvf Httpd_20250522.tar.gz \
--exclude='*.pdf' \
--exclude='*.log' \
--exclude='*.tmp' \
--exclude='*.bak' \
./Serve/Httpd
방법 2: 한 줄로 작성
bash
tar -czvf Httpd_20250522.tar.gz --exclude='*.pdf' --exclude='*.log' --exclude='*.tmp' --exclude='*.bak' ./Serve/Httpd
방법 3: 중괄호 패턴 사용 - 권장
bash
tar -czvf Httpd_20250522.tar.gz --exclude='*.{pdf,log,tmp,bak}' ./Serve/Httpd
방법 4: 제외 파일 목록 사용
먼저 제외할 패턴을 파일로 만들고:
bash
# exclude_list.txt 파일 생성
echo "*.pdf" > exclude_list.txt
echo "*.log" >> exclude_list.txt
echo "*.tmp" >> exclude_list.txt
echo "*.bak" >> exclude_list.txt
echo "cache/" >> exclude_list.txt
그 다음 사용:
bash
tar -czvf Httpd_20250522.tar.gz --exclude-from=exclude_list.txt ./Serve/Httpd
실용적인 예시들
bash
# 웹 개발 프로젝트에서 일반적으로 제외할 파일들
tar -czvf Httpd_20250522.tar.gz \
--exclude='*.pdf' \
--exclude='*.log' \
--exclude='*.tmp' \
--exclude='*.bak' \
--exclude='*.swp' \
--exclude='node_modules/' \
--exclude='.git/' \
--exclude='cache/' \
./Serve/Httpd
# 더 간단하게 (중괄호 패턴)
tar -czvf Httpd_20250522.tar.gz \
--exclude='*.{pdf,log,tmp,bak,swp}' \
--exclude='{node_modules,cache,.git}/' \
./Serve/Httpd
# 크기가 큰 파일들도 제외
tar -czvf Httpd_20250522.tar.gz \
--exclude='*.pdf' \
--exclude='*.log' \
--exclude='*.mp4' \
--exclude='*.avi' \
--exclude='*.zip' \
--exclude='*.tar.gz' \
./Serve/Httpd
디렉토리 제외도 함께
bash
tar -czvf Httpd_20250522.tar.gz \
--exclude='*.pdf' \
--exclude='*.log' \
--exclude='*.tmp' \
--exclude='logs/' \
--exclude='temp/' \
--exclude='backup/' \
./Serve/Httpd
가장 편한 방법은 방법 1처럼 --exclude 옵션을 여러 번 사용하는 것입니다. 가독성도 좋고 각 제외 항목을 명확하게 확인할 수 있습니다.
> 500MB 이상 용량을 가진 파일 확인 결과 *.gz, *.tar, *.zip 파일이 주를 이룸
> 확장자 별로 카운트 했을 때 프로젝트 백업과 거리를 둘 수 있는 *.pdf 파일이 너무 많았음(고객 결과지)
2. 최종 압축 실행
>> tar -czvf Httpd_20250522.tar.gz --exclude='*.pdf' --exclude='*.gz' --exclude='*.zip' --exclude='*.tar' ./Serve/Httpd
> 확장자 별로 카운트 했을 때 프로젝트 백업과 거리를 둘 수 있는 *.pdf 파일이 너무 많았음(고객 결과지)
2. 최종 압축 실행
>> tar -czvf Httpd_20250522.tar.gz --exclude='*.pdf' --exclude='*.gz' --exclude='*.zip' --exclude='*.tar' ./Serve/Httpd
압축 해제 명령어
1. .tar 파일
bash
복사편집
tar -xvf archive.tar
- -x: 압축 해제
- -v: 진행 상황 출력
- -f: 파일 지정
2. .tar.gz 또는 .tgz 파일
bash
복사편집
tar -xzvf archive.tar.gz # 또는 tar -xzvf archive.tgz
- -z: gzip 압축 해제 포함
3. .tar.bz2 파일
bash
복사편집
tar -xjvf archive.tar.bz2
- -j: bzip2 압축 해제 포함
4. .tar.xz 파일
bash
복사편집
tar -xJvf archive.tar.xz
- -J: xz 압축 해제 포함
📁 특정 디렉토리에 압축 풀기
bash
복사편집
tar -xvf archive.tar -C /원하는/경로/
끗.
'OS > Linux' 카테고리의 다른 글
우분투 - Tomcat 과거 버전으로 셋업 (0) | 2025.05.26 |
---|---|
우분투 - Apache 웹서버 설치 (2) | 2025.05.22 |
우분투 - 특정 폴더 이하, 용량 큰 파일 또는 파일 찾기 (1) | 2025.05.22 |
우분투 - 사용자 생성 (0) | 2025.05.08 |
우분투 - 내부 마운트 (0) | 2025.04.17 |