미래의 나를 위해 기록해두는 메모장
gpg, rsync, duplicity를 이용해서 공용 저장소에 내 데이터를 암호화해서 저장하는 방법을 소개한다.
개인용 비대칭키. 내가 쓸 수 있는 개인키와 공개키를 만들어준다. 이걸로 내 백업 데이터를 암호화한다.
gpg 패키지를 설치한 이후에, 아래와 같이 하고 이름, 이메일, 비번을 써준다.
$ gpg --gen-key
요즘 유행하는 snap 에서 설치한다.
snap install duplicity
암호키가 있어야 하니 아까 만든 키를 확인한다.
$ gpg --list-keys
/home/foo/.gnupg/pubring.kbx
---------------------------------
pub rsa3072 2022-01-05 [SC] [expires: 2024-01-05]
B1234B2CB2956767D3214A241F58345D3010FCAC
uid [ultimate] kildong.hong <kildong.hong@example.com>
sub rsa3072 2022-01-05 [E] [expires: 2024-01-05]
여기서 암호화에 사용할 키 이름은 B123...
으로 시작하는 것이 키 ID다.
duplicity --encrypt-key B1234B2CB2956767D3214A241F58345D3010FCAC --exclude-filelist=<path to exclude file> <source> rsync://<rsync ID>:<rsync password>@<rsync server ip>::/<rsync module name>/<target dir>
<source>/temp
<source>/.cache
<source>/snap
duplicity --encrypt-key B1234B2CB2956767D3214A241F58345D3010FCAC list-current-files rsync://<rsync ID>:<rsync password>@<rsync server ip>::/<rsync module name>/<target dir>
100GB 조금 안 되는 양을 백업하는데 4시간 반 정도 걸리는 것으로 보인다. 암호화 하면서 압축도 하는 것으로 보이며 실제 전송량은 약 40GB 정도 되는 듯.
암호화에 사용한 키는 어디 다른 적절한 장소에 저장해둬야 한다. 백업하려는 시스템 전체가 망가지는 경우 복구할 방법이 없으므로 키를 다른 공간에 백업해둔다.
gpg --export > gpg_keys
gpg --export-secret-keys > gpg_secret_keys
두레이 개인 프로젝트의 드라이브에 백업.
gpg --import gpg_secret_keys
전체 복원
duplicity rsync://<rsync ID>:<rsync password>@<rsync server ip>::/<rsync module name>/<backup dir> <target>
일부 파일만 복원. 백업 파일을 보고 해당 파일을 /foo/var
자리에 넣어서 호출. 보통 / 부터 백업하는 일은 거의 없으므로 상대경로를 지정해 주게 된다.
duplicity --file-to-restore /foo/bar rsync://<rsync ID>:<rsync password>@<rsync server ip>::/<rsync module name>/<backup dir> <target>
gpg 키 만료 기한이 기본적으로 2년으로 되어 있어서 2년에 한번씩을 full backup 이 필요하다.
https://splone.com/blog/2015/7/13/encrypted-backups-using-rsync-and-duplicity-with-gpg-and-ssh-on-linuxbsd/ https://kb.synology.com/ko-kr/DSM/tutorial/How_to_back_up_Linux_computer_to_Synology_NAS
tags: rsync - 백업 - duplicity - gpg