본문 바로가기

리눅스

리눅스 tar 명령어를 사용하여 풀 백업, 증분 백업 및 자동 백업을 하는 방법

728x90

리눅스 tar 명령어를 사용하여 풀 백업, 증분 백업 및 자동 백업을 하는 방법

tar 명령어를 사용하여 풀 백업, 증분 백업 및 자동 백업을 수행할 수 있습니다. 아래에 각 백업 유형에 대한 설명과 예제를 제공합니다.

1. 풀 백업 (Full Backup)

풀 백업은 모든 파일과 디렉토리를 한 번에 백업하는 방식입니다. 아래는 tar 명령어를 사용하여 풀 백업을 생성하는 예제입니다.

tar -czvf full_backup.tar.gz /path/to/source

위 명령어는 /path/to/source 경로의 모든 파일과 디렉토리를 압축하여 full_backup.tar.gz라는 이름의 아카이브 파일로 생성합니다.

2. 증분 백업 (Incremental Backup)

증분 백업은 이전 백업과의 차이점만을 백업하는 방식입니다. 아래는 tar 명령어를 사용하여 증분 백업을 생성하는 예제입니다.

tar -czvf incremental_backup.tar.gz --listed-incremental=incremental.snar /path/to/source

위 명령어는 /path/to/source 경로의 파일과 디렉토리를 압축하여 incremental_backup.tar.gz라는 이름의 아카이브 파일로 생성합니다. --listed-incremental 옵션을 사용하여 증분 백업을 수행하고, incremental.snar 파일을 이용하여 변경 내용을 추적합니다.

3. 자동 백업 (Automated Backup)

자동 백업은 주기적으로 백업을 실행하는 스크립트나 도구를 사용하여 자동화된 방식으로 백업을 수행하는 것을 의미합니다. 아래는 cron을 사용하여 매일 자정에 증분 백업을 실행하는 예제입니다.

cron 작업 추가

crontab -e

에디터에서 아래의 줄을 추가합니다 (예시로 매일 자정에 증분 백업을 실행합니다)

0 0 * * * tar -czvf incremental_backup.tar.gz --listed-incremental=incremental.snar /path/to/source

위 예제에서는 tar 명령어를 사용하여 증분 백업을 생성하고, --listed-incremental 옵션을 사용하여 변경 내용을 추적합니다. 0 0 * * *는 매일 자정을 의미하는 cron 표현식입니다.

 

위의 예제는 간단한 예시이며, 실제 백업 요구에 따라 옵션과 경로를 조정해야 할 수 있습니다. 또한, 백업 시 파일 권한 및 소유권을 유지하기 위해 tar 명령어에 --preserve-permissions 및 --preserve-ownership 옵션을 추가할 수도 있습니다.

728x90

 

사용 예시

  • 풀 백업
tar -g /backup/snap-shot -czvf /backup/backup.tar.gz /home/
  • 증분 백업
tar -g /backup/snap-shot -czvf /backup/`date +%Y-%m-%d`.tar.gz /home/
  • 복구
tar -g /backup/snap-shot -xzvf /backup/backup.tar.gz
tar -g /bakcup/snap-shot -xzvf /backup/가장최근날짜.tar.gz

 

  • 자동 백업

한 달에 한 번씩 풀 백업을 하고 하루 한 번씩 증분 백업을 하기 위해서는 아래와 같이 cron을 설정해 준다.

이유는 모르겠으나 백그라운드로 수행하지 않으면 백업이 잘 수행되지 않았다.

/etc/cron.daily/ 디렉토리에서 아래와 같은 내용의 파일을 만든다. 권한은 755로 지정한다. 파일명은 무관하다.

vim script.sh
#!/bin/bash

# Backup script

# Set the backup directory
BACKUP_DIR="/backup"

# Set the source directory to be backed up
SOURCE_DIR="/home"

# Generate the backup filename with the current date
BACKUP_FILE="$BACKUP_DIR/$(date +%Y-%m-%d).tar.gz"

# Create a new backup using tar command
tar -g "$BACKUP_DIR/snap-shot" -czvf "$BACKUP_FILE" "$SOURCE_DIR"
chmod +x script.sh

/etc/cron.monthly/ 디렉터리에서 아래와 같은 내용의 파일을 만든다. 권한은 755로 지정한다. 파일명은 무관하다.

vim script.sh
#!/bin/bash

# Delete old snapshots
rm -f /backup/snap-shot

# Delete old backup files
rm -f /backup/*.tar.gz

# Create a new snapshot
tar -g /backup/snap-shot -czvf /backup/backup.tar.gz /home/
chmod +x script.sh

 

728x90