SW/리눅스

Linux : Rsync 설치, 사용하는 방법, 예제, 명령어

얇은생각 2020. 11. 14. 07:30
반응형

rsync는 원격 셸을 통해 또는 원격 Rsync 데몬을 통해 두 위치 간에 파일과 디렉터리를 동기화하는 빠르고 다용도 명령줄 유틸리티입니다. 소스와 대상 간의 차이만 전송하여 빠른 증분 파일 전송을 제공합니다.

Rsync는 데이터 미러링, 증분 백업, 시스템 간 파일 복사 및 scp , sftp 및 cp 명령의 대체용으로 사용할 수 있습니다.

이 글에서는 가장 일반적인 rsync 옵션에 대한 실제 예와 자세한 설명을 통해 rsync 사용 방법을 설명합니다.

 

Linux : Rsync 설치, 사용하는 방법, 예제, 명령어

 

Rsync 설치

rsync 유틸리티는 대부분의 Linux 배포 및 MacOS에 미리 설치되어 있습니다. 시스템에 rsync가 설치되어 있지 않은 경우 배포의 패키지 관리자를 사용하여 쉽게 설치할 수 있습니다.

 

 

 

Ubuntu 및 Debian Rsync 설치

sudo apt install rsync

 

 

 

CentOS 및 Fedora Rsync 설치

sudo yum install rsync

 

 

 

Rsync 명령 구문

rsync 명령어 사용 방법에 대해 살펴보기 전에 먼저 기본 구문을 살펴보겠습니다.

rsync 유틸리티 표현식은 다음과 같은 형식을 취합니다.

Local to Local:  rsync [OPTION]... [SRC]... DEST
Local to Remote: rsync [OPTION]... [SRC]... [USER@]HOST:DEST
Remote to Local: rsync [OPTION]... [USER@]HOST:SRC... [DEST]

 

옵션 - rsync 옵션입니다.

SRC - 원본 디렉터리입니다.

DEST - 대상 디렉터리입니다.

USER - 원격 사용자 이름입니다.

HOST - 원격 호스트 이름 또는 IP 주소입니다.

 

rsync는 명령의 동작을 제어하는 다양한 옵션을 제공합니다. 가장 널리 사용되는 옵션은 다음과 같습니다.

-a, --archive, 아카이브 모드이며, -rlptgoD와 동일합니다. 이 옵션은 디렉터리를 반복적으로 동기화하고, 특수 장치 및 차단 장치를 전송하고, 심볼릭 링크, 수정 시간, 그룹, 소유권 및 권한을 보존하도록 rsync를 지정합니다.

-z, --compress 이 옵션은 대상 시스템으로 전송되는 데이터를 강제로 압축합니다. 원격 시스템에 대한 연결이 느린 경우에만 이 옵션을 사용합니다.

-P, --partial --progress에 해당합니다. 이 옵션을 사용할 경우 rsync는 전송 중에 진행 표시줄을 표시하고 부분적으로 전송된 파일을 유지합니다. 속도가 느리거나 불안정한 네트워크 연결을 통해 대용량 파일을 전송할 때 유용합니다.

--delete 이 옵션을 사용할 경우 rsync는 대상 위치에서 관련 없는 파일을 삭제합니다. 미러링에 유용합니다.

-q, --quiet 오류가 아닌 메시지를 표시하지 않으려면 이 옵션을 사용합니다.

-e. 이 옵션을 사용하면 다른 원격 셸을 선택할 수 있습니다. 기본적으로 rsync는 ssh를 사용하도록 구성됩니다.

 

 

 

기본 Rsync 사용량

rsync의 가장 기본적인 사용 사례는 하나의 파일을 한 위치에서 다른 로컬 위치로 복사하는 것입니다. 다음은 다음과 같은 예입니다.

rsync -a /opt/filename.zip /tmp/

 

 

 

명령을 실행하는 사용자는 원본 위치에 대한 읽기 권한과 대상에 대한 쓰기 권한을 가지고 있어야 합니다.

대상 위치에서 파일 이름을 생략하면 현재 이름으로 파일이 복사됩니다. 파일을 다른 이름으로 저장하려면 대상 부분에 새 이름을 지정합니다.

rsync -a /opt/filename.zip /tmp/newfilename.zip

 

 

rsync의 진정한 힘은 디렉토리를 동기화할 때 발생합니다. 아래 예제는 웹 사이트 파일의 로컬 백업을 생성하는 방법을 보여 줍니다.

rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/

 

 

대상 디렉터리가 없으면 rsync가 생성합니다. 

rsync는 후행 슬래시(/)를 사용하여 소스 디렉토리에 다른 처리를 제공한다는 점을 언급할 필요가 있습니다. 원본 디렉터리에 후행 슬래시가 있는 경우 명령어는 디렉터리 내용만 대상 디렉터리에 복사합니다. 후행 슬래시가 생략되면 rsync는 대상 디렉터리 내에 원본 디렉터리를 복사합니다.

 

 

 

rsync를 사용하여 원격 시스템에서 데이터 동기화

원격으로 데이터를 전송하기 위해 rsync를 사용할 때는 소스 시스템과 대상 시스템 모두에 설치해야 합니다. 새 버전의 rsync는 SSH를 기본 원격 셸로 사용하도록 구성되어 있습니다.

다음 예에서는 로컬에서 원격 시스템으로 디렉터리를 전송합니다.

rsync -a /opt/media/ remote_user@remote_host_or_ip:/opt/media/

 

 

원격 시스템에 대한 암호 없는 SSH 로그인을 설정하지 않은 경우 사용자 암호를 입력하라는 메시지가 표시됩니다.

원격 시스템에서 로컬 시스템으로 데이터를 전송하려면 원격 위치를 소스로 사용합니다.

rsync -a remote_user@remote_host_or_ip:/opt/media/ /opt/media/

 

 

원격 호스트의 SSH가 기본 22가 아닌 포트에서 수신 중인 경우 -e 옵션을 사용하여 포트를 지정합니다.

rsync -a -e "ssh -p 2322" /opt/media/ remote_user@remote_host_or_ip:/opt/media/

 

 

대량의 데이터를 전송할 때 화면 세션 내에서 rsync 명령을 실행하거나 -P 옵션을 사용하는 것이 좋습니다.

rsync -a -P remote_user@remote_host_or_ip:/opt/media/ /opt/media/

 

 

 

파일 및 디렉터리 제외

파일 및 디렉터리를 제외하는 두 가지 옵션이 있습니다. 첫 번째 옵션은 --exclude 인수를 사용하고 명령줄에서 제외할 파일 및 디렉터리를 지정하는 것입니다. 

파일 또는 디렉터리를 제외할 경우 원본 위치에 대한 상대 경로를 사용해야 합니다.

다음 예에서는 node_modules 및 tmp 디렉토리를 제외하는 방법을 보여 줍니다.

rsync -a --exclude=node_modules --exclude=tmp /src_directory/ /dst_directory/

 

 

두 번째 옵션은 --exclude-from 옵션을 사용하고 파일에서 제외할 파일 및 디렉터리를 지정하는 것입니다.

rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/

 

# /exclude-file.txt

node_modules
tmp

 

반응형