검색 엔진의 방문이 늘어나고 있군...

Posted
Filed under 프로그램과 명령어/관리와 유지보수
참조 원문 : How to create a secure incremental offsite backup in Linux with Duplicity

  재해 복구를 위해 원격 지역에 백업을 하는 경우 보통은 공인망을 통해 데이터가 오가기 때문에 암호화를 염두해야 합니다. 또한 백업으로 인해 소모되는 대역폭, 디스크 스토리지, 시간을 아끼기 위해 풀 백업이 아닌 증강 백업의 지원여부도 중요합니다.

  Duplicity는 암호화가 가능한 증강 백업 툴로서 librsync를 사용하여 대역폭/공간에 있어 효율적인 증강 아카이브를 생성합니다. 또한 GnuPG를 사용해 백업 아카이브를 암호화와/나 사인을 할 수 있어 인증받지 않은 데이터 접근과 조작을 방지합니다.

  이 글에서는 Duplicity로 원격 지점에 보안이 적용된 증강 백업을 하는 방법을 설명합니다.

Duplicity 설치
  데비안 계열에 설치하는 방법은 아래와 같습니다.
$ sudo apt-get install duplicity python-paramiko
  레드햇 계열에 설치하는 방법은 아래와 같습니다. 단, CentOS나 RHEL은 먼저 EPEL 저장소를 사용해야 합니다.
$ sudo yum install duplicity python-paramiko

SCP를 통한 보안성 있는 원격 증강 백업
  로컬 디렉토리(예: ~/Downloads)의 증강 백업본을 만들어 SCP를 이용해 원격 SSH 서버에 전송하려면 아래의 명령어를 사용합니다. 참고로 그 전에 원격 SSH 서버에 대해 패스워드 없이 SSH 로그인을 할 수 있도록 설정해야 합니다.
$ duplicity ~/Downloads scp://user@remote_site.com//home/user/backup/
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: none
GnuPG passphrase:
Retype passphrase to confirm:
No signatures found, switching to full backup.
--------------[ Backup Statistics ]--------------
StartTime 1375918500.17 (Wed Aug  7 19:35:00 2013)
EndTime 1375918539.07 (Wed Aug  7 19:35:39 2013)
ElapsedTime 38.90 (38.90 seconds)
SourceFiles 3
SourceFileSize 65982804 (62.9 MB)
NewFiles 3
NewFileSize 65982804 (62.9 MB)
DeletedFiles 0
ChangedFiles 0
ChangedFileSize 0 (0 bytes)
ChangedDeltaSize 0 (0 bytes)
DeltaEntries 3
RawDeltaSize 65978708 (62.9 MB)
TotalDestinationSizeChange 66132356 (63.1 MB)
Errors 0
-------------------------------------------------
  처음 원격 백업을 실시하면 풀 백업을 하게 되며, 암호화를 위한 초기 GnuPG 패스프레이즈를 설정하게 됩니다. 그 다음부터는 증강 백업을 하게 되며, 처음에 설정한 GnuPG 패스프레이즈를 매번 입력해야 합니다.

비대화 모드를 통한 보안성 있는 원격 증강 백업
  패스프레이즈를 입력하는 것이 싫다면 아래처럼 Duplicity를 실행하기 전에 PASSPHRASE 환경변수를 설정할 수 있습니다.
$ PASSPHRASE=mypass duplicity ~/Downloads scp://user@remote_site.com//home/user/backup/
  커맨드라인에 평문 패스프레이즈를 넣기 싫다면 아래의 백업 스크립트를 사용하는 방법도 있습니다. 당연히 본인만 읽을 수 있도록 퍼미션을 설정해야 합니다.
export PASSPHRASE=yourpass
duplicity ~/Downloads scp://user@remote_site.com//home/user/backup/
unset PASSPHRASE

암호화 없이 원격 증강 백업
  암호화할 필요가 없다면 암호화를 비활성화할 수도 있습니다.
$ duplicity --no-encryption ~/Downloads scp://user@remote_site.com//home/user/backup/

원격 백업의 무결성 확인
  중요한 데이터의 경우 원격 백업이 성공적으로 됐는지 확인할 필요가 있습니다. 로컬과 원격 볼륨이 동일한지 확인하려면 아래의 명령어를 사용합니다.
$ duplicity verify scp://user@remote_site.com//home/user/backup/ ~/Downloads
Local and Remote metadata are synchronized, no sync needed.
Last full backup date: Wed Aug  7 19:34:52 2013
Verify complete: 8 files compared, 0 differences found.
  참고로 "verify" 옵션을 사용할 때는 로컬과 원격 디렉토리의 순서를 반대로 적어야 합니다. 즉, 원격 디렉토리를 먼저 적어야 합니다.

원격 백업을 사용하여 복구
  원격 백업본을 사용해 로컬에 적용하려면 아래와 같은 명령어를 실행합니다.
$ duplicity scp://user@remote_site.com//home/user/backup/ ~/Downloads_restored
  원격 백업을 사용하여 복구하려면 지정한 복구 대상 디렉토리(예: Downloads_restored)가 로컬에 존재하지 않아야 합니다.

FTP를 통한 보안성 있는 원격 증강 백업
  SCP와 더불어 FTP를 포함한 몇 가지 다른 프로토콜을 사용하는 것도 가능합니다. FTP를 사용하려면 아래와 같은 형식을 이용합니다.
$ duplicity ~/Downloads ftp://username@ftp_server.com/backup_directory
  비대화형으로 실행하려면 FTP_PASSWORD 환경변수에 FTP 패스워드를 설정합니다.
$ FTP_PASSWORD=mypass duplicity ~Downloads ftp://username@ftp_server.com/backup_directory

트러블슈팅 팁
  아래와 같은 에러가 발생한다면 python용 SSH2 프로토콜 라이브러리를 설치하지 않은 것입니다.
BackendException: Could not initialize backend: No module named paramiko
  문제를 해결하기 위해 데비안 계열의 경우 아래 명령어를 실행합니다.
$ sudo apt-get install python-paramiko
  레드햇 계열의 경우 아래 명령어를 실행합니다.
$ sudo yum install python-paramiko

  아래와 같은 에러가 발생한다면 원격 SSH 서버에 대해 패스워드 없이 SSH 로그인을 할 수 있도록 설정하지 않은 것입니다.
BackendException: ssh connection to xxx@xxxx failed: No authentication methods available
2013/08/12 15:39 2013/08/12 15:39