웹사이트 검색

rdiff-backup - Linux용 원격 증분 백업 도구


rdiff-backup은 Linux, Mac OS X 또는 Cygwin과 같은 모든 POSIX 운영 체제에서 작동하는 로컬/원격 증분 백업을 위한 강력하고 사용하기 쉬운 Python 스크립트입니다. 미러와 증분 백업의 놀라운 기능을 결합합니다.

중요한 것은 하위 디렉터리, 개발 파일, 하드 링크 및 권한, uid/gid 소유권, 수정 시간, 확장 속성, acl 및 리소스 포크와 같은 중요한 파일 속성을 보존한다는 것입니다. 널리 사용되는 rsync 백업 도구와 유사한 방식으로 파이프를 통해 대역폭 효율적인 모드로 작동할 수 있습니다.

rdiff-backup은 SSH를 사용하여 네트워크를 통해 단일 디렉토리를 다른 디렉토리에 백업합니다. 이는 데이터 전송이 암호화되어 안전하다는 것을 의미합니다. 원격 시스템의 대상 디렉터리는 소스 디렉터리의 정확한 복사본이 되지만 추가 역방향 비교는 대상 디렉터리의 특수 하위 디렉터리에 저장되어 얼마 전에 손실된 파일을 복구할 수 있습니다.

종속성

Linux에서 rdiff-backup을 사용하려면 시스템에 다음 패키지가 설치되어 있어야 합니다.

  • Python v2.2 이상
  • librsync v0.9.7 이상
  • pylibacl 및 pyxattr Python 모듈은 선택 사항이지만 각각 POSIX 액세스 제어 목록(ACL) 및 확장 속성 지원에 필요합니다.
  • rdiff-backup-statistics에는 Python v2.4 이상이 필요합니다.

Linux에서 rdiff-backup을 설치하는 방법

중요: 네트워크를 통해 작업하는 경우 두 시스템 모두 rdiff-backup을 설치해야 합니다. 바람직하게는 두 시스템 모두 rdiff-backup을 정확하게 설치해야 합니다. 같은 버전.

스크립트는 이미 주류 Linux 배포판의 공식 저장소에 있습니다. 아래 명령을 실행하여 rdiff-backup과 해당 종속성을 설치하기만 하면 됩니다.

Ubuntu에 rdiff-backup 설치

Ubuntu Focal 또는 Debian Bullseye 이상(2.0)에 Rdiff-Backup을 설치합니다.


sudo apt-get update
sudo apt-get install librsync-dev rdiff-backup

이전 버전의 Ubuntu 백포트에 Rdiff-Backup을 설치하려면(백포트된 2.0이 필요함)


sudo add-apt-repository ppa:rdiff-backup/rdiff-backup-backports
sudo apt update
sudo apt install rdiff-backu

CentOS/RHEL 8에서

CentOS 및 RHEL 8(COPR에서)에 Rdiff-Backup을 설치합니다.


sudo yum install yum-plugin-copr epel-release
sudo yum copr enable frankcrawford/rdiff-backup
sudo yum install rdiff-backup

CentOS/RHEL 7에서

CentOS 및 RHEL 7(COPR에서)에 Rdiff-Backup을 설치합니다.


sudo yum install yum-plugin-copr epel-release
sudo yum copr enable frankcrawford/rdiff-backup
sudo yum install rdiff-backup

CentOS/RHEL 6에서


sudo yum install centos-release-scl
sudo yum install rh-python36 gcc libacl-devel
scl enable rh-python36 bash
sudo pip install rdiff-backup pyxattr pylibacl
echo 'exec scl enable rh-python36 -- rdiff-backup "$@"' | sudo tee /usr/bin/rdiff-backup
sudo chmod +x /usr/bin/rdiff-backup

페도라에서

Fedora 32+에 Rdiff-Backup을 설치하려면.


sudo dnf install rdiff-backup

Linux에서 rdiff-backup을 사용하는 방법

앞서 언급했듯이 rdiff-backup은 SSH를 사용하여 네트워크의 원격 시스템에 연결하며 SSH의 기본 인증은 일반적으로 사람의 상호 작용이 필요한 사용자 이름/비밀번호 방법입니다.

그러나 스크립트 등을 사용하여 자동 백업과 같은 작업을 자동화하려면 SSH 키를 사용하여 SSH 비밀번호 없는 로그인을 구성해야 합니다. SSH 키는 쉬운 파일 동기화 또는 전송을 위해 두 Linux 서버 간의 신뢰를 높이기 때문입니다.

SSH 비밀번호 없는 로그인을 설정한 후에는 다음 예제와 함께 스크립트 사용을 시작할 수 있습니다.

다른 파티션에 파일 백업

아래 예에서는 다른 파티션의 Backup 디렉터리에 있는 /etc 디렉터리를 백업합니다.

sudo rdiff-backup /etc /media/aaronkilik/Data/Backup/mint_etc.backup

특정 디렉터리와 해당 하위 디렉터리를 제외하려면 다음과 같이 --exclude 옵션을 사용할 수 있습니다.

sudo rdiff-backup --exclude /etc/cockpit --exclude /etc/bluetooth /media/aaronkilik/Data/Backup/mint_etc.backup

아래와 같이 --include-special-files 옵션을 사용하여 모든 장치 파일, fifo 파일, 소켓 파일 및 심볼릭 링크를 포함할 수 있습니다.

sudo rdiff-backup --include-special-files --exclude /etc/cockpit /media/aaronkilik/Data/Backup/mint_etc.backup

파일 선택을 위해 설정할 수 있는 두 가지 중요한 플래그가 더 있습니다. --max-file-size size는 지정된 크기(바이트)보다 큰 파일을 제외하고 --min-file-size size는 다음보다 작은 파일을 제외합니다. 주어진 크기(바이트):

sudo rdiff-backup --max-file-size 5M --include-special-files --exclude /etc/cockpit /media/aaronkilik/Data/Backup/mint_etc.backup

로컬 Linux 서버에 원격 파일 백업

이 섹션의 목적을 위해 다음을 사용합니다.

Remote Server (tecmint)	        : 192.168.56.102 
Local Backup Server (backup) 	: 192.168.56.10

이전에 설명한 대로 두 시스템 모두에 동일한 버전의 rdiff-backup을 설치해야 합니다. 이제 다음과 같이 두 시스템 모두에서 버전을 확인해 보세요.

rdiff-backup -V

백업 서버에서 다음과 같이 백업 파일을 저장할 디렉터리를 만듭니다.

mkdir -p /backups

이제 백업 서버에서 다음 명령을 실행하여 원격 Linux 서버 192.168.56.102/var/log/ 및 /root 디렉터리를 백업합니다. /backups의 Strong>:

rdiff-backup [email ::/var/log/ /backups/192.168.56.102_logs.backup
rdiff-backup [email ::/root/ /backups/192.168.56.102_rootfiles.backup

아래 스크린샷은 원격 서버 192.168.56.102의 루트 파일과 백 서버 192.168.56.10의 백업 파일을 보여줍니다.

스크린샷에 표시된 대로 backup 디렉터리에 생성된 rdiff-backup-data 디렉터리를 기록해 두세요. 여기에는 백업 프로세스 및 증분 파일과 관련된 중요한 데이터가 포함되어 있습니다.

이제 192.168.56.102 서버에서 아래와 같이 루트 디렉터리에 추가 파일이 추가되었습니다.

변경된 데이터를 가져오기 위해 백업 명령을 한 번 더 실행해 보겠습니다. -v[0-9](여기서 숫자는 자세한 수준을 지정하며 기본값은 3이며 자동으로 표시됨) 옵션을 사용할 수 있습니다. 자세한 정보 표시 기능을 설정합니다.

rdiff-backup -v4 [email ::/root/ /backups/192.168.56.102_rootfiles.backup 

/backups/192.168.56.102_rootfiles.backup 디렉토리에 포함된 부분 증분 백업의 수와 날짜를 나열하려면 다음을 실행할 수 있습니다.

rdiff-backup -l /backups/192.168.56.102_rootfiles.backup/

Cron을 사용하여 rdiff-back 백업 자동화

--print-statistics를 사용하여 백업이 성공한 후 요약 통계를 인쇄할 수 있습니다. 그러나 이 옵션을 설정하지 않으면 세션 통계 파일에서 정보를 계속 사용할 수 있습니다. 매뉴얼 페이지의 STATISTICS 섹션에서 이 옵션에 대한 자세한 내용을 읽어보세요.

그리고 –remote-schema 플래그를 사용하면 원격 컴퓨터에 연결하는 대체 방법을 지정할 수 있습니다.

이제 다음과 같이 백업 서버 192.168.56.10backup.sh 스크립트를 생성해 보겠습니다.

cd ~/bin
vi backup.sh

스크립트 파일에 다음 줄을 추가합니다.

#!/bin/bash

#This is a rdiff-backup utility backup script

#Backup command
rdiff-backup --print-statistics --remote-schema 'ssh -C %s "sudo /usr/bin/rdiff-backup --server --restrict-read-only  /"'  [email ::/var/logs  /backups/192.168.56.102_logs.back

#Checking rdiff-backup command success/error
status=$?
if [ $status != 0 ]; then
        #append error message in ~/backup.log file
        echo "rdiff-backup exit Code: $status - Command Unsuccessful" >>~/backup.log;
        exit 1;
fi

#Remove incremental backup files older than one month
rdiff-backup --force --remove-older-than 1M /backups/192.168.56.102_logs.back

파일을 저장하고 종료한 후 다음 명령을 실행하여 백업 서버 192.168.56.10의 crontab에 스크립트를 추가합니다.

crontab -e

매일 자정에 백업 스크립트를 실행하려면 다음 줄을 추가하세요.

0   0  *  *  * /root/bin/backup.sh > /dev/null 2>&1

crontab을 저장하고 닫으면 이제 백업 프로세스가 성공적으로 자동화되었습니다. 예상대로 작동하는지 확인하세요.

추가 정보, 전체 사용 옵션 및 예를 보려면 rdiff-backup 매뉴얼 페이지를 읽어보세요.

man rdiff-backup

rdiff-backup 홈페이지: http://www.nongnu.org/rdiff-backup/

지금은 그게 다야! 이 튜토리얼에서는 Linux에서 로컬/원격 증분 백업을 위한 사용하기 쉬운 Python 스크립트인 rdiff-backup을 설치하고 기본적으로 사용하는 방법을 보여주었습니다. 아래 피드백 섹션을 통해 여러분의 생각을 공유해 주세요.