rsync 명령어를 이용한 원격서버 백업

메인서버에서 백업서버로 특정 디렉토리 내 파일을 통째로 넘겨야 할 때, rsync 명령어를 사용하면 간편하게 데이터를 넘길 수 있습니다.

 

rsync -av -e ssh /메인서버디렉토리/* 목적지IP:/목적지디렉토리

 

백업서버의 root계정 비밀번호 입력 후 통과하게 되면 모든 파일을 전송하게 됩니다.

 

추가적으로, –bwlimit=5124 등으로 kbps에 대한 전송 대역폭 옵션을 주면, 대역폭 상황에 따라 최대 5Mbps 정도로 제약을 주면서 rsync할 수 있어, 기존에 서비스중인 다른 내용에 최대한 방해하지 않는 선에서 진행할 수 있도록 할 수 있습니다. 본인이 소유한 서버의 네트워크 대역폭에 맞게 다음과 같이 구체적인 옵션을 줄 수도 있습니다.

 

rsync -av -e ssh --bwlimit=1024 /메인서버디렉토리/* 목적지IP:/목적지디렉토리

* 위 옵션을 통해 1MBps로 전송 대역폭을 제한할 수 있게 됩니다. 네트워크 대역폭이 넓다면 더 큰 옵션값을 통해 빨리 전송할 수 있을 것입니다.

 

-v옵션은 verbose를 의미하는데, 이는 필요 이상으로 많은 단어로 설명한다는 일반적인 의미를 가지고 있는 단어입니다. 이 단어가 컴퓨터 과학에서는 “실행 시 자신이 수행하는 작업에 대한 현재 정보를 제공한다”는 정도의 의미를 가지고 있다고 합니다. 말 수가 많은 이라는 형용사로 번역되는 단어인데, 매우 재미있다는 생각이 드네요 ^^; 하나하나 명령어를 익혀가며 그와 관련된 옵션에 대해서도 한번쯤은 생각해 보는게 저같은 초보 개발자들에게는 매우 유익하다는 생각이 듭니다! 하나의 파일만 전송한다면 써도 의미는 없을 것이고, 여러개의 디렉토리 및 파일을 통째로 전송할 때, 그리고 터미널 접속을 계속 유지한다면 위와 같은 옵션을 주어 지켜보는 것이 좋을 것입니다. 만약 진행과정에 대해 볼 필요가 없다면 v옵션은 제외하면 될 것입니다.

 

만약 터미널에서 rsync 과정을 지켜보기 너무 오래걸리는 전송 요청인 경우, 그리고 이미 그 rsync명령어를 실행해 버린 경우라면 다음과 같이 처리할 수 있을 것입니다. 기본적으로 현재 터미널 세션으로부터 어떤 프로세스를 생성하게 되는 경우 job table에 그 작업 내역이 등록되게 되는데, ctrl+z를 누르게 되면 현재 작업을 일시 중지하면서 쉘 프롬프트로 빠져나오게 되는데요, 이후 bg && disown 명령어를 입력하여 백그라운드로 현재 중지된 프로세스를 돌리면서, 해당 백그라운드 프로세스의 소유자를 현재 터미널로부터 삭제해버려 nohub아래로 프로세스를 보낼 수 있게 됩니다. (이때는 v옵션을 제외하는게 좋습니다. 아니면 계속 프롬프트로 현재 전송중인 파일이 스멀스멀 올라옵니다.. 해보시는것도 좋아요 😀 )

이렇게 되면, 현재 진행중인 작업을 ssh 터미널을 종료하더라도 백그라운드에서 계속 진행하도록 만들 수 있게 됩니다. 만약 rsync작업이 매우 오래 진행되면서 ssh 터미널 세션을 유지할 수 없는 상황이라면 이렇게 작업을 진행하시는 것을 추천드립니다.

 

public key를 이용하여 비밀번호 입력 없이 전송하는 방법은 향후 업데이트!

You may also like...

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.