우분투에서 특정 경로와 그 하위 경로를 모두 포함하여 압축하는 방법

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 옵션을 여러 번 사용하는 것입니다. 가독성도 좋고 각 제외 항목을 명확하게 확인할 수 있습니다.



최종 10년 묵은 프로젝트 폴더 효과적인 압축 방법은

1. 용량이 큰 파일 패턴 확인 / https://juit.tistory.com/125
> 500MB 이상 용량을 가진 파일 확인 결과 *.gz, *.tar, *.zip 파일이 주를 이룸
> 확장자 별로 카운트 했을 때 프로젝트 백업과 거리를 둘 수 있는 *.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 /원하는/경로/
 




끗.

+ Recent posts