rsync 와 ssh 를 이용한 백업과 복구 (동기화)

rsync 는 백업과 복구시에 매우 유용한 도구입니다.

단지 단독으로 활용시에는 특히 DB 백업시에는 개인자료등이 평문으로 전송되는 보안상 문제가 있습니다.

그래서 간단히 ssh와 조합하여 ssh 터널링을 통해 보안까지 잡는 방법을 알아보겠습니다.

기본적인 rsync 로컬 동기화

> rsync -avzh 원본위치/ /백업위치/

rsync +  ssh 연결을 통해 원격서버에서 동기화

> rsync -avzh SSH아이디@서버IP:/원본위치 /백업위치/

위 명령을 실행하면 SSH 계정 비밀번호를 물어봅니다. 비밀번호를 제대로 입력하면 rsync 가 ssh 로 접속해서 작동하게 됩니다.

보통 보안상 SSH 포트번호를 표준값인 22번을 사용하지 않고 다른 번호를 사용하는 경우가 많은데요. 그 경우에는 아래와 같이 호출하면 됩니다.

> rsync -avzh -e "ssh -p 포트번호" SSH아이디@서버IP:/원본위치 /백업위치/

위 명령어을 제대로 실행하기 위해서는 포트번호를 제대로 입력하고 원격서버의 방화벽상에도 해당 포트를 열어줘야 합니다. 또한 명령어 실행하는 호출서버도 아웃바운드(OUTBOUND) 방화벽이 있는 경우 이 아웃바운드 방화벽에서도 해당 포트번호를 허용해줘야 합니다.(대표적으로 iwinv 등등..)

요약 >

원격 서버: SSH 포트번호 인바운드 방화벽 해제
호출 서버: SSH 포트번호 아웃바운드 방화벽 해제

rsync +  ssh 연결을 통해 원격서버에서 동기화 (AWS 기준 인증키 사용하는 경우)

> rsync -avzh -e “ssh -p 포트번호 -i 인증키경로“ ubuntu@서버IP:/원본위치 /백업위치/

AWS 환경은 SSH 접속시 일반적으로 위와같이 인증키 로그인을 사용하므로 별도의 비밀번호를 입력하지 않습니다.

AWS 환경에서 접속이 잘 안되는 경우는 몇가지가 있는데 대표적으로 ssh 포트번호를 특정 아이피에만 열어둔 경우입니다. 이런 경우 AWS EC2 제어콘솔로 가서 보안그룹에 해당 아이피 제한을 풀어줘야 사용가능합니다.