rsync 명령은 파일과 디렉토리를 로컬 및 원격지에 동기화 할 때 사용하며, 리눅스 서버의 백업을 위해 rsync를 사용한 백업 쉘 스크립트를 살펴보고, 실습을 통해 쉽게 적용하고 사용할 수 있습니다.
rsync --help |
rsync 명령은 파일과 디렉토리를 로컬 및 원격지에 동기화 할 때 사용하며, 리눅스 서버의 백업을 위해 rsync를 사용한 백업 쉘 스크립트를 살펴보고, 실습을 통해 쉽게 적용하고 사용할 수 있습니다.
rsync를 사용한 쉘 스크립트를 통해 리눅스 데이터 풀 백업과 증분 백업을 할 수 있습니다. bash 쉘 스크립트를 작성해서 백업 실행 파일을 생성하고, cron 작업 등록을 통해 자동화 합니다.
아래 실습에서는 매일 새벽 1시에 rsync를 사용한 쉘 스크립트 파일을 실행해서 /linux/backup/192.168.0.100/FULL 디렉터리에 풀 백업 데이터가 저장되며, 바뀐 파일은(증분 백업) /linux/backup/192.168.0.100/20200603 경로에 백업됩니다.
실습 환경
- 운영 체제(OS) : CentOS 8
- root 계정으로 실행
- IP 설정 및 인터넷이 가능한 환경
- rsync 설치 및 환경 설정이 완료된 서버
쉘 스크립트 파일 및 백업 경로 디렉터리 생성하기
백업 스크립트 파일 생성 및 데이터 백업 경로를 설정합니다.
쉘 스크립트 파일과 환경 설정 파일 디렉터리 생성하기
[mkdir -p /backup_batch/etc]
백업 데이터 저장 디렉터리 생성하기
[mkdir -p /linux/backup]
백업 스크립트 작성하기
rsync를 사용해서 백업을 진행 할 실행파일을 작성합니다.
backup.sh 파일을 vi로 열어서 아래 코드를 입력하고 저장합니다.
[vi /backup_batch/backup.sh]
[#!/bin/bash DATE=`date +%Y%m%d` DAY=`date +%d` DST=/linux/backup/ LOG_BAK=/backup_batch/bak_log/ ETC=/backup_batch/etc/ LIST=" 192.168.0.100 << 백업 대상 서버 IP " for L in ${LIST} ; do INI=$(cat $ETC$L.ini) if [ ! -d $DST$L/FULL ]; then mkdir -p $DST$L/FULL date +"[%Y/%m/%d %H:%M:%S] ${L} : START" rsync_PASSWORD=패스워드 $INI 계정명@$L:/ $DST$L/FULL > $LOG_BAK/back_$DATE-FULL.log.${L} 2>&1 date +"[%Y/%m/%d %H:%M:%S] ${L} : END" else mkdir -p $DST$L/$DATE FDAY=$(ls $DST$L/ | grep FULL) date +"[%Y/%m/%d %H:%M:%S] ${L} : START" rsync_PASSWORD=패스워드 $INI --backup --backup-dir=$DST$L/$DATE 계정명@$L:/ $DST$L/$FDAY/ > $LOG_BAK/back_$DATE.log.${L} 2>&1 date +"[%Y/%m/%d %H:%M:%S] ${L} : END" fi sleep 5 done /usr/bin/tail -15 $LOG_BAK/back_$DATE-FULL.log.* | /usr/bin/mutt -s "backup_log_`date +%Y%m%d`" 메일 계정 /usr/bin/tail -15 $LOG_BAK/back_$DATE.log.* | /usr/bin/mutt -s "backup_log_`date +%Y%m%d`" 메일 계정]
백업 스크립트 실행 권한 추가하기
[chmod +x /backup_batch/backup.sh]
백업 환경 설정 파일 생성하기
백업 대상 서버의 백업 경로와 옵션을 지정하는 환경 파일을 작성합니다.
IP.ini 파일 형식으로 작성하며, exclude 옵션을 사용해서 백업에서 제외할 경로를 설정합니다.
[vi /backup_batch/etc/192.168.0.100.ini]
exclude 옵션을 사용해서 제외할 디렉토리 경로를 추가합니다.
[/usr/bin/rsync -avrH --progress --stats --delete --exclude=/proc/* --exclude=/lost+found/* --exclude=/media/* --exclude=/mnt/* --exclude=/sys/* --exclude=/pub/chroot/pub/* --exclude=/pub/log/nginx/*]
작업 스케줄러 등록하기
/etc/crontab 파일에 자동 백업 스크립트 실행 작업을 추가합니다.
[vi /etc/crontab]
[00 01 * * * root /backup_batch/backup.sh]
마무리
rsync를 사용한 리눅스 서버 백업 스크립트 개발 및 자동 백업 설정 작업이 완료되었습니다.
상용 및 오픈 소스 백업 소프트웨어를 사용할 수 없을 때, rsync를 사용한 쉘 스크립트 개발을 통해 간편하게 리눅스 서버 백업을 할 수 있습니다.
COMMENTS