Duplicity – 리눅스에서 암호화된 점진적 백업 생성

경험상 시스템 백업에 대해 너무 조심스러울 수 없다는 것을 보여줍니다. 귀중한 데이터를 보호하고 보존할 때는, 필요할 때를 대비하여 백업에 의존할 수 있도록 여분의 노력을 기울이는 것이 가장 좋습니다.

오늘날에도 일부 클라우드 및 호스팅 제공업체들이 VPS의 자동 백업을 상대적으로 낮은 비용으로 제공하지만, 돈을 아끼기 위해 자체 도구를 사용하여 백업 전략을 만드는 것이 좋습니다. 그리고 그 돈을 추가 저장 공간을 구입하거나 더 큰 VPS를 구입하는 데 사용할 수도 있습니다.

흥미롭게 들리나요? 이 글에서는 Duplicity라는 도구를 사용하여 파일 및 디렉터리를 백업하고 암호화하는 방법을 보여드리겠습니다. 또한, 이 작업에 점진적 백업을 사용하면 공간을 절약할 수 있습니다.

그렇다면, 시작해 봅시다.

Linux에 Duplicity 백업 도구 설치

RHEL 기반 배포판에 duplicity를 설치하려면 먼저 EPEL 저장소를 활성화해야 합니다 (Fedora를 사용하는 경우 이 단계를 생략할 수 있습니다).RHEL 9에서:

RHEL 9에서:

subscription-manager repos --enable codeready-builder-for-rhel-9-$(arch)-rpms
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm

CentOS 9, AlmaLinux 9, Rocky Linux 9에서:

dnf config-manager --set-enabled crb
dnf install epel-release

RHEL 8에서:

subscription-manager repos --enable codeready-builder-for-rhel-8-$(arch)-rpms
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

CentOS 9, AlmaLinux 9, Rocky Linux 9에서:

dnf config-manager --set-enabled powertools
dnf install epel-release

그런 다음,

dnf install duplicity

Ubuntu와 Linux Mint과 같은 Debian 기반 배포판을 위해.

sudo apt update 
sudo apt install duplicity

이론적으로 파일 서버에 연결하는 많은 방법이 지원되지만 실제로 테스트된 ssh/scp/sftp, 로컬 파일 액세스, rsync, ftp, HSI, WebDAV, Amazon S3만 있습니다.

설치가 완료되면 다양한 시나리오에서 백업 및 복원을 위해 독점적으로 sftp를 사용합니다.

테스트 환경은 RHEL 8 상자(백업될 것임)와 Debian 11 머신(백업 서버)으로 구성됩니다.

원격 서버에 암호 없는 로그인을 위한 SSH 키 생성

시작하기 전에 우리의 RHEL 상자에 SSH 키를 생성하고 이를 Debian 백업 서버로 전송합시다.

만약 다른 포트에서 SSH를 실행 중이라면 아래 명령은 Debian 서버의 sshd 데몬이 포트 XXXXX에서 수신 대기 중이라고 가정합니다. AAA.BBB.CCC.DDD를 원격 서버의 실제 IP로 바꿉니다.

ssh-keygen -t rsa
ssh-copy-id [email protected]
ssh-copy-id -p XXXXX [email protected]  

그런 다음 비밀번호를 사용하지 않고 백업 서버에 연결할 수 있는지 확인해야 합니다.

ssh [email protected]
SSH Passwordless Remote Login

이제 우리는 데이터의 암호화 및 복호화에 사용될 GPG 키를 생성해야 합니다.

gpg2 --full-gen-key

다음을 입력하라는 프롬프트가 표시됩니다:

  • 키 유형
  • 키 크기
  • 키가 유효한 기간
  • A passphrase
Create GPG RSA Key in Linux

키 생성을 위해 필요한 엔트로피를 생성하려면 다른 터미널 창을 통해 서버에 로그인하고 몇 가지 작업을 수행하거나 일부 명령을 실행하여 엔트로피를 생성할 수 있습니다 (그렇지 않으면이 프로세스의 이 부분이 완료될 때까지 시간이 오래 걸릴 수 있습니다).

키가 생성되면 다음과 같이 목록으로 나열할 수 있습니다:

gpg --list-keys
List GPG Keys

위의 노란색으로 강조된 문자열은 공개 키 ID로 알려져 있으며, 파일을 암호화하기 위한 요청된 인수입니다.

디플리시티(Duplicity)를 사용하여 리눅스 백업 만들기

간단히 시작하려면 /var/log 디렉토리만 백업하되, /var/log/anaconda/var/log/sa는 예외로 취급합니다.

이것이 첫 번째 백업이므로 전체 백업이 될 것입니다. 이후 실행에서는 증분 백업이 생성됩니다 (아래 명령어에 duplicity 다음에 하이픈 없이 full 옵션을 추가하지 않는 한):

PASSPHRASE="tecmint" duplicity --encrypt-key 115B4BB13BC768B8B2704E5663C429C3DB8BAD3B --exclude /var/log/anaconda --exclude /var/log/sa /var/log scp://[email protected]//backups/rhel8
OR
PASSPHRASE="YourPassphraseHere" duplicity --encrypt-key YourPublicKeyIdHere --exclude /var/log/anaconda --exclude /var/log/sa /var/log scp://root@RemoteServer:XXXXX//backups/rhel8

위 명령어에서 이중 슬래시를 빠뜨리지 않도록 주의하세요! 이것들은 백업 파일이 저장될 백업 상자의 /backups/rhel8이라는 디렉토리에 대한 절대 경로를 나타내기 위해 사용됩니다.

여기에 암호 입력, 여기에 공개 키 ID 입력, 그리고 원격 서버 입력를 각각 앞서 입력한 암호, GPG 공개 키 ID, 백업 서버의 IP 또는 호스트 이름으로 대체하세요.

결과물은 다음 이미지와 유사해야 합니다:

Create a Backup using Duplicity

위 이미지는 총 86.3 MB가 백업되어 3.22 MB로 목적지에 저장되었음을 나타냅니다. 새로 만든 백업을 확인하기 위해 백업 서버로 전환해 봅시다:

Confirm Linux Backup Files

A second run of the same command yields a much smaller backup size and time:

Compress Backup

디플리시티(Duplicity)를 사용하여 리눅스 백업 복원하기

파일, 디렉토리 및 해당 내용물 또는 전체 백업을 성공적으로 복원하려면 대상이 존재하지 않아야 합니다 (duplicity는 기존 파일이나 디렉토리를 덮어쓰지 않습니다). 명확히 하기 위해 CentOS 상자에서 cron 로그를 삭제해 봅시다:

rm -f /var/log/cron

원격 서버에서 단일 파일을 복원하는 구문은 다음과 같습니다:

PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore filename sftp://root@RemoteHost//backups/rhel8 /where/to/restore/filename

여기서,

  • 파일 이름은 백업된 디렉터리에 대한 상대 경로를 가진 추출할 파일입니다
  • /복원할/위치는 파일을 복원하려는 로컬 시스템의 디렉터리입니다.

우리의 경우, 원격 백업에서 cron 주 로그를 복원하려면 다음을 실행해야 합니다:

PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore cron sftp://[email protected]:XXXXX//backups/rhel8 /var/log/cron

cron 로그는 원하는 대상 위치로 복원되어야 합니다.

마찬가지로, /var/log에서 디렉터리를 삭제하고 백업을 사용하여 복원할 수 있습니다:

rm -rf /var/log/mail
PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore mail sftp://[email protected]:XXXXX//backups/rhel8 /var/log/mail

이 예에서, mail 디렉터리는 모든 내용과 함께 원래 위치로 복원되어야 합니다.

Duplicity 명령 사용

언제든지 다음 명령으로 아카이브된 파일 목록을 표시할 수 있습니다:

duplicity list-current-files sftp://[email protected]:XXXXX//backups/rhel8

6개월 이전의 백업을 삭제하세요:

duplicity remove-older-than 6M sftp://[email protected]:XXXXX//backups/rhel8

myfile을(를) 2일 12시간 전으로 되돌린 상태로 gacanepa 디렉터리 내부에 복원하세요:

duplicity -t 2D12h --file-to-restore gacanepa/myfile sftp://[email protected]:XXXXX//remotedir/backups /home/gacanepa/myfile

마지막 명령에서는 시간 간격의 사용 예를 볼 수 있습니다 (-t로 지정됨): 각각이 숫자와 s, m, h, D, W, M, 또는 Y 중 하나를 뒤따릅니다 (초, 분, 시간, 일, 주, 월, 또는 연 단위로 나타냄).

요약

복제 프로젝트의 웹사이트를 방문하여 추가 문서와 예제를 확인하는 것을 강력히 권장합니다.

독자 편의를 위해 PDF 형식의 duplicity 매뉴얼을 제공해드렸으며, 이는 완전한 참조 가이드입니다.

질문이나 의견이 있으시면 언제든지 알려주세요.

Source:
https://www.tecmint.com/duplicity-create-encrypted-incremental-linux-backup/