본문 바로가기

About/Linux

[Linux] rsync로 아카이브 동기화(Linux 백업 동기화)

정기적으로 백업해야하는 경우 아주 큰 아카이브를 매일매일 전송하면 네트워크에 상당한 부담을 주는 문제가 생긴다. 파일 시스템을 통째로 전송하는 대신 마지막으로 백업한 후 생성되거나 업데이트된 파일만 전송하면 편리한데 , 이럴 때 rsync를 사용한다.


 

파일로 가득 찬 디렉터리를 원격 호스트에 복사한 후 로컬 파일이 변경되어도 정확한 사본을 만드는 실습을 진행해 보겠습니다.

 

먼저 디렉토리를 하나 만들고 다음과 같이 열 개의 빈파일을 생성합니다.

$ mkdir mynewdir && cd mynewdir
$ touch file {1..10}

그 다음 ssh로 파일 사본을 전송할 원격 서버에 디렉터리를 생성하고, -av 인자와 함께 rsync 명령어를 실행합니다. -v 인자는 명령이 수행하는 작업을 상세히 출력하는 명령입니다. -a 인자는 rsync 재귀적으로 동기화하고(하위 디렉터리와 그 안에 있는 내용도 모두 동기화), 특수 파일들, 수정 시각, 그리고 소유권과 접근 권한을 유지합니다. 

$ ssh ubuntu@10.50.24.144 "mkdir syncdirectory"
$ rsync -av * ssh ubuntu@10.50.24.144:syncdirectory

rsync를 이용한 파일 백업

백업할 서버의 syncdirectory 에 파일이 전송된 것을 확인할 수 있습니다.

서버의 syncdirectory

이제 rsync가 제대로 작동하는지 테스트하기 위해 로컬의 mynewdir 디렉터리에 새 파일을 추가하고 기존 파일에 단어 몇 개를 추가합니다.

$ touch newfile
$ echo "Hello" >> file1

그 후 한번 더 위의 rsync 명령어를 실행합니다.

새 파일과 업데이트한 파일만 목록에 나오는것을 확인할 수 있습니다.

또한 서버의 syncdirectory에도 반영된 것을 확인할 수 있습니다.

서버의 syncdirectory

 


rsync를 이용하여 변경되거나 추가된 파일만 백업하는 방법을 다루어 봤습니다.