카테고리 없음

리눅스 압축 명령어 활용법: 서버 파일 백업 복원 실전 가이드

14722 2026. 8. 30. 19:32

리눅스 서버를 운영하면서 가장 중요하지만 자주 소홀해지기 쉬운 작업이 바로 데이터 백업과 복원입니다. 서버 장애, 시스템 오류, 또는 실수로 인한 파일 삭제 상황이 발생했을 때 신속하게 원복할 수 있는 유일한 수단은 평소에 잘 만들어둔 백업 파일뿐입니다.

이번 글에서는 리눅스 환경에서 가장 흔히 사용되는 tar, gzip, bzip2, zip 등 필수 압축 명령어의 기본 개념부터, 실제로 서버 엔지니어와 개발자들이 현업에서 활용하는 실전 서버 백업 및 복원 스크립트 활용법까지 알기 쉽게 정리해 드립니다.

1. 리눅스 대표 압축 명령어 종류 및 특성

리눅스에서 파일이나 디렉터리를 묶고 압축할 때는 용도와 성능에 따라 명령어 선택이 달라집니다. 기본적으로 '묶기(Archive)'와 '압축(Compression)' 개념을 구분하는 것이 중요합니다.

  • tar (Tape Archive): 파일이나 디렉터리를 하나로 묶어주는 아카이브 도구입니다. 자체적인 압축 기능은 없지만, 다른 압축 알고리즘(gzip, bzip2 등)과 결합하여 가장 널리 사용됩니다.
  • gzip / gunzip: 가장 보편적으로 쓰이는 압축 프로그램입니다. 압축 속도가 빠르고 리소스 소모가 적어 대용량 서버 백업에 유용합니다. (.tar.gz 또는 .tgz)
  • bzip2 / bunzip2: gzip보다 압축률이 뛰어납니다. 다만 압축하는 데 더 많은 CPU 리소스와 시간이 소요됩니다. (.tar.bz2)
  • zip / unzip: 윈도우(Windows) 등 타 OS와의 호환성이 뛰어난 압축 방식입니다.

2. 필수 명령어 옵션 및 기본 사용법

리눅스 압축 명령어를 효율적으로 다루려면 자주 사용하는 옵션을 숙지해두어야 합니다.

tar 주요 옵션

  • -c (create): 새 아카이브 파일 생성
  • -x (extract): 아카이브 파일 해제 및 복원
  • -v (verbose): 압축/해제 과정을 상세히 출력
  • -f (file): 아카이브 파일명 지정 (필수 옵션)
  • -z (gzip): gzip으로 압축/해제
  • -j (bzip2): bzip2로 압축/해제
  • -p (preserve-permissions): 파일의 소유권 및 권한 상태 유지

실전 기본 명령어 예시

  1. 디렉터리 묶어서 gzip으로 압축하기 (.tar.gz)
  2.  
  3. Bash
     
    tar -czvf backup_data.tar.gz /var/www/html
    
  4. gzip 압축 해제하기(※ -C 옵션을 이용하면 원하는 특정 경로에 압축을 풀 수 있습니다.)
  5. Bash
     
    tar -xzvf backup_data.tar.gz -C /var/www/html_restore
    
  6. bzip2 방식으로 고압축하기 (.tar.bz2)
  7. Bash
     
    tar -cjvf backup_data.tar.bz2 /var/www/html
    
  8. zip으로 압축하고 unzip으로 풀기
  9. Bash
     
    zip -r backup_data.zip /var/www/html
    unzip backup_data.zip -d /var/www/html_restore
    

3. 서버 파일 백업 및 복원 실전 가이드

실제 웹 서버나 DB 데이터베이스 파일이 위치한 디렉터리를 백업하고 복원하는 전체 프로세스를 단계별로 알아봅니다.

1단계: 백업 대상 및 저장 경로 지정

백업 전, 서버 내 용량을 확인(df -h)한 후 백업 파일을 저장할 전용 디렉터리를 생성합니다.

Bash
 
mkdir -p /backup/web_data

2단계: 날짜 기반 파일명으로 자동 백업 수행

백업 파일이 겹치지 않도록 날짜 데이터(date +%Y%m%d)를 포함하여 압축 백업을 수행합니다.

Bash
 
tar -czvpf /backup/web_data/web_backup_$(date +%Y%m%d).tar.gz /var/www/html

(※ -p 옵션을 추가하여 원본 파일의 보안 권한과 소유권 정보를 그대로 유지하는 것이 매우 중요합니다.)

3단계: 백업 무결성 검증 (내부 파일 목록 확인)

압축을 풀지 않고도 백업 파일 내부에 필요한 데이터가 올바르게 묶였는지 검증합니다.

Bash
 
tar -tzvf /backup/web_data/web_backup_20260830.tar.gz

4단계: 재난 복구(Recovery) 수행

서버에 문제가 생겼을 때 백업된 아카이브 파일로부터 원본 디렉터리를 안전하게 복원합니다.

Bash
 
tar -xzvpf /backup/web_data/web_backup_20260830.tar.gz -C /

4. 자동 백업 시스템 구축 (Cron 활용)

매번 수동으로 백업 명령어를 실행하는 것은 비효율적입니다. 리눅스의 예약 작업 관리자인 cron을 활용하여 매일 새벽 자동으로 서버 데이터를 압축하고 저장하도록 설정할 수 있습니다.

  1. 백업 쉘 스크립트 작성 (/usr/local/bin/daily_backup.sh)
  2. Bash
     
    #!/bin/bash
    BACKUP_DIR="/backup/web_data"
    SOURCE_DIR="/var/www/html"
    DATE=$(date +%Y%m%d)
    
    # 백업 실행
    tar -czpf $BACKUP_DIR/web_backup_$DATE.tar.gz $SOURCE_DIR
    
    # 7일 이상 지난 오래된 백업 파일 자동 삭제
    find $BACKUP_DIR -type f -name "*.tar.gz" -mtime +7 -exec rm -f {} \;
    
  3. 스크립트 실행 권한 부여
  4. Bash
     
    chmod +x /usr/local/bin/daily_backup.sh
    
  5. crontab 등록 (매일 새벽 3시 자동 실행)아래 내용을 추가합니다:
  6. Plaintext
     
    0 3 * * * /usr/local/bin/daily_backup.sh
    
  7. Bash
     
    crontab -e
    

5. 서버 데이터 백업 시 주의사항

  • 백업 파일의 외부 저장: 동일한 서버 디스크 내에만 백업본을 두면, 물리적 디스크 장애 발생 시 원본과 백업본이 동시에 손실될 수 있습니다. scp나 rsync를 이용해 별도의 백업 서버나 클라우드 Storage로 이전하는 것을 권장합니다.
  • 권한 유지(-p 옵션): 웹 서버 백업 시 소유권(chown) 및 실행 권한이 변형되면 복원 후 웹 서비스가 정상 동작하지 않을 수 있으므로 반드시 아카이브 옵션에 주의해야 합니다.
  • 주기적인 복원 테스트: 백업 스크립트가 정상 작동하더라도 백업 파일 자체가 손상되었을 가능성이 있으므로, 분기별로 주기적인 데이터 복원 테스트를 진행하는 습관이 필요합니다.

마무리

리눅스 압축 명령어인 tar와 gzip을 제대로 이해하고 활용하는 것만으로도 안정적인 서버 운용 환경을 구축할 수 있습니다. 오늘 소개해 드린 백업 프로세스와 크론(Cron) 자동화 설정을 시스템에 적용해 보시고 데이터 안정성을 한층 높여보시기 바랍니다.