카테고리 없음

리눅스 서버 파일 압축과 백업: tar, gzip 명령어 실무 활용법

14722 2026. 8. 20. 16:26

 

리눅스 서버를 운영하다 보면 로그 파일이나 웹사이트 파일, 설정 파일, 데이터 백업 파일을 하나씩 관리해야 하는 상황이 자주 발생합니다. 파일의 개수가 많아지면 저장 공간을 많이 차지할 뿐만 아니라 다른 서버로 파일을 옮기는 작업도 번거로워집니다.

이럴 때 유용하게 사용할 수 있는 것이 리눅스의 tar와 gzip 명령어입니다.

tar는 여러 파일과 디렉터리를 하나의 파일로 묶어주는 역할을 하고, gzip은 파일의 크기를 줄여주는 압축 기능을 제공합니다.

이번 글에서는 리눅스 서버에서 자주 사용하는 tar와 gzip 명령어의 기본 사용법부터 서버 백업, 로그 관리, 압축 해제까지 실무에서 바로 활용할 수 있는 방법을 알아보겠습니다.


1. tar와 gzip은 어떤 명령어일까?

리눅스에서 파일 압축을 이야기할 때 tar와 gzip을 함께 사용하는 경우가 많습니다.

하지만 두 명령어의 역할은 서로 다릅니다.

tar의 역할

tar는 여러 파일이나 디렉터리를 하나의 파일로 묶어주는 명령어입니다.

예를 들어 다음과 같은 디렉터리가 있다고 가정해보겠습니다.

/var/www/html/
├── index.html
├── css/
├── js/
└── images/

이 파일들을 하나의 백업 파일로 묶을 때 tar를 사용할 수 있습니다.

gzip의 역할

gzip은 파일의 용량을 줄이는 압축 프로그램입니다.

따라서 서버에서는 다음과 같이 사용하는 경우가 많습니다.

여러 파일
   ↓
tar로 하나의 파일로 묶기
   ↓
gzip으로 압축
   ↓
.tar.gz 백업 파일 생성

결과적으로 다음과 같은 파일이 만들어집니다.

website_backup.tar.gz

2. tar 기본 문법 알아보기

tar의 기본적인 사용 형식은 다음과 같습니다.

tar [옵션] [파일명] [대상]

가장 많이 사용하는 옵션은 다음과 같습니다.

옵션의미

c 새로운 아카이브 생성
x 압축 파일 해제
t 압축 파일 내용 확인
v 처리 과정을 화면에 표시
f 사용할 파일 이름 지정
z gzip 압축 사용

실무에서 자주 사용하는 조합은 다음과 같습니다.

tar -czvf

압축을 해제할 때는 다음과 같이 사용합니다.

tar -xzvf

3. 디렉터리를 tar.gz로 압축하기

예를 들어 /var/www/html 디렉터리를 백업한다고 가정해보겠습니다.

다음 명령어를 실행합니다.

sudo tar -czvf website_backup.tar.gz /var/www/html

각 옵션의 의미는 다음과 같습니다.

  • c : 새로운 압축 파일 생성
  • z : gzip 방식으로 압축
  • v : 처리되는 파일을 화면에 표시
  • f : 뒤에 나오는 파일 이름을 압축 파일 이름으로 사용

실행이 완료되면 현재 디렉터리에 다음 파일이 생성됩니다.

website_backup.tar.gz

4. gzip 압축 파일 해제하기

.tar.gz 파일을 복원하려면 다음 명령어를 사용할 수 있습니다.

tar -xzvf website_backup.tar.gz

압축을 풀면서 파일 목록이 화면에 표시됩니다.

특정 디렉터리에 압축을 풀고 싶다면 -C 옵션을 사용할 수 있습니다.

sudo tar -xzvf website_backup.tar.gz -C /var/www/

이 방법을 이용하면 원하는 위치에 백업 데이터를 복원할 수 있습니다.


5. 압축 파일 안의 내용만 확인하기

백업 파일을 바로 압축 해제하기 전에 어떤 파일이 들어 있는지 확인하는 것도 중요합니다.

다음 명령어를 사용합니다.

tar -tzvf website_backup.tar.gz

여기서 t는 압축 파일의 내용을 확인한다는 의미입니다.

백업 파일이 제대로 생성됐는지 확인할 때 매우 유용합니다.


6. 파일 하나만 gzip으로 압축하기

gzip은 단일 파일을 압축할 때도 사용할 수 있습니다.

예를 들어 다음과 같은 로그 파일이 있다고 가정해보겠습니다.

server.log

다음 명령어를 실행합니다.

gzip server.log

그러면 다음과 같은 파일이 생성됩니다.

server.log.gz

주의할 점은 일반적인 gzip 사용 시 원본 파일이 압축 파일로 대체된다는 것입니다.

원본을 유지하면서 압축하고 싶다면 -c 옵션 등을 활용해 별도의 출력 파일을 만드는 방법을 사용할 수 있습니다.


7. gzip 파일 압축 해제하기

.gz 파일의 압축을 해제하려면 다음과 같이 입력합니다.

gunzip server.log.gz

또는 다음 명령어를 사용할 수도 있습니다.

gzip -d server.log.gz

두 명령 모두 gzip 파일을 압축 해제하는 데 사용할 수 있습니다.


8. 서버 백업에 tar.gz를 사용하는 이유

리눅스 서버에서 tar.gz 형식이 자주 사용되는 이유는 여러 파일을 하나로 묶으면서 동시에 압축할 수 있기 때문입니다.

예를 들어 웹사이트 파일이 수천 개라면 각각의 파일을 따로 백업하는 것보다 하나의 파일로 묶는 것이 관리하기 편리합니다.

웹사이트 파일
     ↓
tar로 하나로 묶기
     ↓
gzip으로 압축
     ↓
website_2026-08-20.tar.gz

이렇게 만들어진 백업 파일은 다른 서버나 저장 공간으로 이동하기도 편리합니다.


9. 날짜를 포함한 자동 백업 파일 만들기

서버 백업에서는 파일 이름에 날짜를 넣어두면 관리하기가 훨씬 편리합니다.

예를 들어 다음과 같이 사용할 수 있습니다.

DATE=$(date +"%Y-%m-%d")
tar -czvf "website_${DATE}.tar.gz" /var/www/html

그러면 다음과 같은 파일이 생성됩니다.

website_2026-08-20.tar.gz

매일 백업하면 다음과 같이 날짜별로 구분할 수 있습니다.

website_2026-08-18.tar.gz
website_2026-08-19.tar.gz
website_2026-08-20.tar.gz

백업 파일이 많아졌을 때 언제 만들어진 파일인지 쉽게 확인할 수 있습니다.


10. 로그 파일 백업에도 활용할 수 있다

서버에서는 로그 파일이 계속 생성됩니다.

예를 들어 Nginx 로그는 다음과 같은 위치에 저장되는 경우가 많습니다.

/var/log/nginx/

로그 디렉터리를 압축하려면 다음과 같이 사용할 수 있습니다.

sudo tar -czvf nginx_logs.tar.gz /var/log/nginx/

다만 운영 서버에서 현재 기록 중인 로그 파일을 무조건 압축하거나 이동하는 경우에는 로그 관리 방식에 주의해야 합니다.

특히 장기간 운영되는 서버에서는 logrotate와 함께 사용하는 것이 효율적입니다.


11. 특정 파일을 제외하고 압축하기

백업할 때 특정 디렉터리나 파일을 제외해야 하는 경우도 있습니다.

예를 들어 cache 디렉터리를 제외하려면 다음과 같이 사용할 수 있습니다.

tar --exclude="/var/www/html/cache" -czvf website_backup.tar.gz /var/www/html

불필요한 캐시 파일이나 임시 파일을 백업에서 제외하면 백업 파일의 크기를 줄이는 데 도움이 됩니다.


12. 압축률을 조절하는 gzip 옵션

gzip은 압축 수준을 지정할 수 있습니다.

일반적으로 -1부터 -9까지 사용할 수 있으며 숫자가 높을수록 압축률을 높이는 방향으로 동작합니다.

예를 들어:

gzip -1 backup.log

빠른 압축을 우선하는 경우 사용할 수 있습니다.

높은 압축률을 사용하려면:

gzip -9 backup.log

다만 압축률을 무조건 높이는 것이 좋은 것은 아닙니다.

서버의 CPU 사용량과 압축에 걸리는 시간까지 고려해야 합니다. 대용량 서버 백업에서는 압축률과 처리 시간 사이의 균형을 생각하는 것이 중요합니다.


13. 백업 파일의 크기 확인하기

압축을 완료한 후에는 파일 크기를 확인하는 것이 좋습니다.

ls -lh website_backup.tar.gz

예를 들어 다음과 같이 표시될 수 있습니다.

-rw-r--r-- 1 root root 250M Aug 20 02:00 website_backup.tar.gz

-h 옵션을 사용하면 바이트 단위보다 사람이 읽기 쉬운 KB, MB, GB 형태로 표시됩니다.


14. 백업 파일이 정상인지 확인하는 방법

백업은 만들어졌다고 끝나는 것이 아닙니다.

실제로 복구할 수 있는지 확인하는 과정도 중요합니다.

먼저 압축 파일의 목록을 확인합니다.

tar -tzf website_backup.tar.gz

특정 파일이 포함되어 있는지도 확인할 수 있습니다.

tar -tzf website_backup.tar.gz | grep index.html

정상적으로 파일 목록이 출력된다면 백업 파일 내부에 해당 파일이 포함되어 있는지 확인할 수 있습니다.


15. 디스크 공간도 함께 확인해야 한다

서버에서 백업 파일을 계속 생성하면 디스크 공간이 부족해질 수 있습니다.

현재 디스크 사용량은 다음 명령어로 확인합니다.

df -h

특정 디렉터리가 얼마나 많은 공간을 사용하는지 확인하려면 다음 명령어를 사용합니다.

du -sh /backup

백업 서버를 운영할 때는 백업 파일 관리와 디스크 공간 관리를 함께 해야 합니다.


16. 오래된 백업 파일 자동 삭제하기

백업 파일을 매일 생성하면 시간이 지나면서 파일이 계속 쌓입니다.

예를 들어 /backup 디렉터리에서 7일이 지난 .tar.gz 파일을 삭제하려면 다음과 같이 사용할 수 있습니다.

find /backup -type f -name "*.tar.gz" -mtime +7 -delete

이 명령은 매우 강력하기 때문에 실제 서버에서는 삭제 대상 경로와 파일 이름 패턴을 반드시 확인한 후 사용하는 것이 좋습니다.

삭제하기 전에 어떤 파일이 대상인지 확인하려면:

find /backup -type f -name "*.tar.gz" -mtime +7

먼저 목록을 확인한 후 문제가 없을 때 -delete를 사용하는 방법이 안전합니다.


17. tar와 gzip을 활용한 실무 백업 예제

간단한 서버 백업 스크립트를 만들어보겠습니다.

#!/bin/bash

BACKUP_DIR="/backup"
SOURCE_DIR="/var/www/html"
DATE=$(date +"%Y-%m-%d_%H-%M-%S")

BACKUP_FILE="${BACKUP_DIR}/website_${DATE}.tar.gz"

tar -czf "$BACKUP_FILE" "$SOURCE_DIR"

find "$BACKUP_DIR" -type f -name "*.tar.gz" -mtime +7 -delete

echo "$(date) Backup completed: $BACKUP_FILE"

스크립트 파일을 저장한 후 실행 권한을 부여합니다.

chmod +x server_backup.sh

그리고 직접 실행해 백업이 정상적으로 만들어지는지 먼저 확인합니다.

sudo ./server_backup.sh

정상적으로 실행됐다면 /backup 디렉터리에 날짜가 포함된 백업 파일이 생성됩니다.


18. Crontab과 연결하면 자동 백업 가능

앞에서 만든 백업 스크립트를 Crontab과 연결하면 매일 자동으로 백업할 수 있습니다.

Crontab을 편집합니다.

sudo crontab -e

매일 새벽 2시에 실행하려면 다음과 같이 등록합니다.

0 2 * * * /usr/local/bin/server_backup.sh >> /var/log/server_backup.log 2>&1

이렇게 하면 관리자가 매일 직접 백업 명령어를 입력하지 않아도 정해진 시간에 백업이 실행됩니다.


19. 서버 백업에서 꼭 기억해야 할 점

서버 백업을 구성할 때 단순히 tar.gz 파일 하나를 만들어 놓는 것만으로는 충분하지 않습니다.

다음 항목을 함께 관리하는 것이 좋습니다.

첫째, 백업 주기를 정합니다.

하루에 한 번 백업할지, 중요한 데이터는 더 자주 백업할지 결정해야 합니다.

둘째, 백업 보관 기간을 정합니다.

백업 파일을 무제한 보관하면 디스크 공간이 부족해질 수 있습니다.

셋째, 다른 위치에도 백업합니다.

서버 자체에만 백업하면 서버 디스크가 손상되었을 때 백업까지 잃을 수 있습니다.

넷째, 복구 테스트를 진행합니다.

백업 파일이 존재하는 것보다 실제로 데이터를 복구할 수 있는지가 더 중요합니다.


마무리

리눅스 서버에서 tar와 gzip은 파일 압축과 백업을 위해 매우 자주 사용하는 기본 명령어입니다.

특히 다음 명령어는 기억해두면 서버 관리에 유용합니다.

# 디렉터리 압축
tar -czvf backup.tar.gz /var/www/html

# 압축 파일 내용 확인
tar -tzvf backup.tar.gz

# 압축 해제
tar -xzvf backup.tar.gz

# gzip 파일 압축 해제
gunzip file.gz

# 디스크 사용량 확인
df -h

# 백업 디렉터리 용량 확인
du -sh /backup

여기에 Crontab을 이용한 자동 실행과 오래된 백업 파일 정리를 추가하면 보다 체계적인 서버 백업 환경을 만들 수 있습니다.

다만 중요한 서버에서는 로컬 서버의 백업만 믿지 말고 별도의 저장 공간이나 원격 서버에도 백업을 보관하고 정기적으로 복구 테스트를 진행하는 것이 좋습니다.

리눅스 서버 관리에서 백업은 문제가 발생한 뒤에 준비하는 것이 아니라, 문제가 발생하기 전에 자동화해 두는 것이 가장 안전한 방법입니다.