[linux] 리눅스 rsync 커맨드 기초 사용법

rsync는

rsync 프로그램을 사용하면 로컬 디렉토리 또는 두 컴퓨터 간에 디렉토리를 동기화할 수 있습니다. Rsync는 두 위치 간에 어떤 파일이 다르거나 새로운지 자동으로 판별하고 디렉토리를 동기화합니다.

두 컴퓨터간에 디렉토리를 동기화 하려면 양쪽 컴퓨터 모두에 rsync가 설치되어 있어야 합니다.

기본 사용 커맨드는 다음과 같습니다. 소스 경로의 파일들을 원격 경로로 푸시합니다. 이때 마지막 동기화 이후 새롭게 변경된 파일만 동기화합니다.

rsync [소스 경로] [타겟 경로]

소스 경로가 로컬 경로이고 타겟 경로가 원격 호스트의 경로이면 로컬 컴퓨터에 있는 파일들을 원격 경로로 푸시하는 것이고, 소스 경로가 원격 호스트 경로이고, 타겟 경로가 로컬 경로이면 원격 호스트의 파일(들)을 로컬 경로로 당겨오게 됩니다.

실제로 동기화를 할 때 가장 많이 사용하는 옵션 표시를 포함하면 다음과 같습니다.

rsync -avx -e ssh [소스 경로] [타겟 경로]

rsync 옵션

옵션은 여러 개가 있지만 실제로 사용하는 옵션은 정해져 있으며, 실제로 rsync로 디렉토리 동기화를 하면 거의 모든 옵션을 다 켜고 사용한다고 생각하면 됩니다.

-a: 아카이브 모드를 활성화합니다. 아카이브 모드에서 rsync는 원본의 파일 권한, 소유권 및 수정 시간을 보존합니다.
-e: 사용할 원격 쉘을 지정합니다. 보통 ssh로 설정합니다.
-l : 모든 심볼릭 링크를 보존합니다. -a 옵션을 사용하면 이 옵션이 자동으로 활성화됩니다.
-r : rsync가 모든 하위 디렉토리를 재귀적으로 탐색합니다. -a 옵션을 사용하면 이 옵션이 자동으로 활성화됩니다.
-v: verbose 모드를 활성화합니다. rsync가 실행되는 동안 동기화 되는 파일 정보를 표시합니다. (기본적으로 rsync는 어떠한 정보도 표시하지 않습니다.) 더 자세한 정보를 보려면 -vv 옵션을 사용할 수 있습니다.
-z: 파일 전송에 대한 압축을 활성화합니다.

rsync로 동기화를 할 때 가장 많이 사용하는 옵션이 -avz 입니다. 원본의 권한, 소유권, 시간 정보를 유지한 채 전송 압축한 파일을 전송하면서 전송 정보를 화면에 출력합니다.

-a 옵션을 켜면 -l-r 옵션이 자동 활성화 되므로 동기화 하는 디렉토리의 하위 디렉토리 구조와 파일까지 모두 동기화를 하게 됩니다.


웹 사이트 파일을 다른 서버에 백업하려면 다음 순서대로 진행할 수 있습니다.

rsync 사용 방법

원격으로 푸시하기

wwwroot 디렉토리를 원격 서버의 사용자 계정 홈 디렉토리의 backup 디렉토리로 백업하려면 다음 명령을 입력합니다:

rsync -avz -e ssh wwwroot userid@mydomain.com:~/backup

rsync가 완료되면 mydomain.com의 원격 서버 사용자에게는 계정에 있는 로컬 wwwroot 디렉토리의 동일한 복사본이 있는 backup/wwwroot 디렉토리가 유지됩니다.

원격에서 당겨오기

소스와 타겟의 위치를 바꾸면 원격 위치에서 파일을 "pull"하게 됩니다. 서비스 중인 원격 서버의 업데이트 된 파일들을 로컬 환경으로 가져와서 개발 환경에 반영하려고 할 때 rsync를 사용해서 원격 서비스 서버의 파일들을 끌어올 수 있습니다.

rsync는 마지막 동기화 이후 변경된 파일만 업데이트하므로 시간과 대역폭을 절약할 수 있습니다.

내 홈 디렉토리에서 다음 명령을 실행합니다. 마지막 부분의 마침표(.)는 현재 로컬 경로를 의미합니다.

rsync -avz -e ssh userid@mydomain.com:~/wwwroot .

rsync가 완료되면 wwwroot 디렉토리에는 원격 서버의 wwwroot 디렉토리의 완전한 복사본을 유지하고 있게 됩니다.

-v 옵션을 사용하면 전송하는 파일 경로와 파일 이름이 화면에 출력되며, 전송된 전체 파일 크기에 대한 정보 또한 마지막에 표시됩니다.

$> rsync -avz -e ssh backupadmin@mydomain.com:~/wwwroot ~/backup
backupadmin@mydomain.com's password:
receiving incremental file list
wwwroot/
wwwroot/LICENSE
wwwroot/README.md
wwwroot/ads.txt
wwwroot/yarn.lock
wwwroot/assets/
wwwroot/assets/built/
wwwroot/assets/built/main.min.js
wwwroot/assets/built/main.min.js.map
wwwroot/assets/css/screen.css
wwwroot/assets/fonts/
wwwroot/assets/fonts/inter-v12-latin-500.woff
wwwroot/assets/images/
wwwroot/assets/images/default-skin.png
wwwroot/assets/js/
wwwroot/assets/js/main.js
wwwroot/partials/
wwwroot/partials/content-cta.hbs
wwwroot/partials/feature-image.hbs
wwwroot/partials/loop.hbs
wwwroot/partials/pswp.hbs
wwwroot/partials/icons/
wwwroot/partials/icons/twitter.hbs

sent 1,117 bytes  received 671,668 bytes  27,460.61 bytes/sec
total size is 2,001,167  speedup is 2.97
$>