티스토리 뷰

리눅스 시스템 사이에서 백업을 해야 할일이 생겨서 이것저것 찾아 보다가..
rsync를 사용하기로 했습니다.

우선 ssh를 통해서 rsync 백업을 할려고 하면, password를 묻습니다.
한번씩 할 때는 패스워드를 치면 상관없지만, crontab을 사용해서 주기적으로 할려고 하면 문제가 발생합니다.

해결하는 방법을 이것저것 찾았는데 2가지 정도가 나오네요.

첫번째ssh-keygen을 통해서 패스워드를 묻지 않게 하는 방법 입니다.
# ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa): <ENTER>
Enter passphrase (empty for no passphrase): <ENTER>
Enter same passphrase again:  <ENTER>
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
58:bd:ef:fd:3b:62:79:2e:ea:de:c4:73:2d:7d:11:2b root@web-tl
The key's randomart image is:
+--[ DSA 1024]----+
|                 |
|         .       |
|        . .    . |
|       o   .    o|
|      . S .  E o |
|           .. ..o|
|            .+o.+|
|           .o*o+.|
|          o++.*++|
+-----------------+
# cat ~/.ssh/id_dsa.pub | ssh [원격ID]@[원격HOST] "cat >> .ssh/authorized_keys"
password: 암호입력<ENTER>
# _

이렇게 설정을 해 두면, 해당 원격 서버에 접속할때 암호를 전혀 묻지 않게 됩니다.

# rsync -avz --delete -e ssh [원격HOST]:/home/source /home/target



이런식으로 백업 하시면 됩니다.

하지만, 뭔가 찝찔하죠..
누구나 이 자리에 앉으면 패스워드를 몰라도 원격 호스트에 접근을 할 수 있게 되죠...

접근이 안 된다면, 서버에 접속해서, .ssh/authorized_keys 의 퍼미션을 600 으로 수정해 줍니다.


# ssh [원격ID]@[원격HOST]

# chmod 600 ~/.ssh/authorized_keys


두번째sshpass를 사용해서 접근하는 방법니다.
CentOS나 fedora에서는 기본 yum해서는 들어 있지 않습니다.
아래와 같이 epel을 통해서 받습니다.

# sudo su -
# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
# yum update
# yum -y install sshpass

이렇게 설치해 주시면 됩니다.
Ubuntu를 쓰시는 분들은 apt-get으로 받으세요.

# sudo apt-get install sshpass

sshpass을 사용법을 알아보면..  아래와 같습니다.

sshpass -p '[암호]' ssh [원격ID]@[원격HOST]

# sshpass -p 'myPassword' ssh username@server.example.com

이런식이죠...

그러면, 이걸로 rsync를 해 봐야 겠죠?

# rsync --rsh="sshpass -p myPassword ssh -l username" server.example.com:/var/www/html/ /backup/

이렇게 하시면 됩니다.

참 쉽죠?

여기서 주기적으로 백업을 하고 싶다면..

# crontab -e

이렇게 뛰우시고 내용을 수정하시면 됩니다.
*/5 * * * * rsync --rsh="sshpass -p myPassword ssh -l username" server.example.com:/var/www/html/ /backup/

이렇게 해 두면 5분 주기로 백업이 진행 됩니다.


하지만, 이건 더욱 찝찝합니다. 패스워드가 코드에 들어가 있으니 -_-;;
잘 고민해서 사용하세요..
그래도 한다면.. 1번이 조금 괜찮을 듯...


저작자 표시
신고
댓글
댓글쓰기 폼