다음과 같은 절차로 설정
- 블로그 서버 root 계정과 타켓 백업 서버에 패스워드 없이 접속 가능하게 설정
- tar 수동 백업 스크립트 작성
- root 유저의 crontab에 bash 스크립트 실행 설정
docker로 구동하는 ghost 데이터는 다음과 같이 root 권한으로 데이터가 생성되어 있음을 알수 있다.
ubuntu@hibuz:~/nginx-certbot/data$ ll
total 20
drwxrwxr-x 5 ubuntu ubuntu 4096 Feb 22 07:50 ./
drwxrwxr-x 4 ubuntu ubuntu 4096 Mar 29 07:32 ../
drwxrwxr-x 4 ubuntu ubuntu 4096 Feb 22 05:18 certbot/
drwxr-xr-x 3 root root 4096 Feb 22 07:50 ghost/
drwxrwxr-x 2 ubuntu ubuntu 4096 Apr 18 06:20 nginx/
root 로 로그인후 ssh-key 생성
ubuntu@hibuz:~/nginx-certbot/data$ sudo -i
root@hibuz:~# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:vY1JA2P4nBsJw1m84DuOuqineNH+2eOR7e1pa1cZr8Y root@hibuz
The key's randomart image is:
+---[RSA 2048]----+
| .. |
| ..+. |
| .*.+. |
| .*.* . |
| . .S + +|
| . . o * * .o|
| o o .+ = .. o |
|..o o .o.o .o.E |
|*+oo .o.o..+=+ |
+----[SHA256]-----+
root@hibuz:~# cd .ssh/
root@hibuz:~/.ssh# ll
total 20
drwx------ 2 root root 4096 May 1 20:09 ./
drwx------ 4 root root 4096 Jan 17 02:55 ../
-rw------- 1 root root 558 Jan 17 02:55 authorized_keys
-rw------- 1 root root 1679 May 1 20:09 id_rsa
-rw-r--r-- 1 root root 392 May 1 20:09 id_rsa.pub
id_rsa.pub 파일내용을 복사후 타겟 백업 서버에 접속하여 authorized_keys에 등록후 재 접속 하면 패스워드 없이 접속 되는것을 확인(만약 authorized_keys 가 없다면 생성후 chmod 400 authorized_keys로 권한설정) 하고 백업을 위한 폴더도 생성한다.
# root@hibuz:~# ssh ubuntu@nas.hibuz.com
ubuntu@nas-srv:~$ vi ~/.ssh/authorized_keys
ubuntu@nas-srv:~$ exit
logout
Connection to nas.hibuz.com closed.
# ssh ubuntu@nas.hibuz.com
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-28-generic x86_64)
ubuntu@nas-srv:~$ mkdir hibuz.com.blog.backup
백업 스크립트를 작성하고 먼저 root 권한으로 수동 백업 쉘이 잘 되는지 확인한다.
ubuntu@hibuz:~/nginx-certbot$ vi remote_backup.sh
#!/bin/bash
BACKUP_DATE=`date "+%Y-%m-%d"`
tar czf $BACKUP_DATE.tgz /home/ubuntu/nginx-certbot/data
scp $BACKUP_DATE.tgz ubuntu@nas.hibuz.com:~/hibuz.com.blog.backup/
rm -f $BACKUP_DATE.tgz
ubuntu@hibuz:~/nginx-certbot$ sudo bash ./remote_backup.sh
tar: Removing leading `/' from member names
2020-05-01.tgz 100% 21MB 6.6MB/s 00:03
ubuntu@hibuz:~/nginx-certbot$ ssh ubuntu@nas.hibuz.com
ubuntu@nas-srv:~$ ll hibuz.com.blog.backup/
total 21968
drwxrwxr-x 2 ubuntu ubuntu 4096 5월 2 05:55 ./
drwxr-xr-x 22 ubuntu ubuntu 4096 5월 2 05:00 ../
-rw-r--r-- 1 ubuntu ubuntu 22486652 5월 2 05:55 2020-05-01.tgz
ubuntu@nas-srv:~$ exit
매일 새벽 5시에 root 권한으로 스크립트가 실행되도록 crontab에 등록
$ sudo crontab -e
SHELL=/bin/bash
0 5 * * * /home/ubuntu/nginx-certbot/remote_backup.sh > /dev/null 2>&1