리눅스에서 rsync 명령어 마스터하기

이름에서 알 수 있듯이, rsync는 동기화 도구입니다. 처음 사용할 때는 단순히 파일과 디렉토리를 한 위치에서 다른 위치로 복사합니다. 그러나 이후 사용 시에는 이러한 위치 사이의 차이점만 동기화합니다. 즉, 소스 디렉토리에 파일을 하나 추가하면 rsync는 새로운 파일만 목적지로 복사합니다. 이 기능은 특히 원격 위치로 복사할 때 많은 시간과 대역폭을 절약해 줍니다.
원격 서버에 50GB의 데이터를 동기화해야 한다고 가정해 봅시다. 매일 rsync를 실행하도록 예약할 수 있습니다. 전체 50GB를 반복적으로 복사할 필요 없이, 유틸리티는 차이점만 전송합니다. 이는 매일 몇 메가바이트의 데이터만 업로드하면 되는 것을 의미할 수 있으며, 기가바이트를 전송할 필요는 없습니다.
위의 이미지에서 처음에는 104MB가 전송되었고, 두 번째 사용 시에는 단지 31KB만 필요했던 것을 확인할 수 있습니다.
추가 읽기: 리눅스에서 Rclone을 사용하여 여러 클라우드 저장소 공급자와 동기화하기
다양한 리눅스 배포판에서 rsync 설치하기
Debian 및 Debian 기반 배포판(예: Ubuntu)에서는 다음 명령어로 rsync를 설치할 수 있습니다:
sudo apt install rsync
Fedora에서는 다음 명령어로 설치합니다:
dnf install rsyncRedHat에서 파생된 배포판(예: CentOS)에서는:
yum install rsyncArch Linux에 rsync를 설치하려면 다음 명령어를 사용합니다:
pacman -S rsyncopenSUSE에서는 다음과 같이 사용합니다:
zypper install rsync기본 리포지토리에 포함되어 있지 않은 경우, openSUSE rsync 설치 페이지를 참조하십시오.
rsync를 사용하여 로컬 파일 또는 디렉토리 동기화하기
rsync의 일반 문법은 다음과 같습니다: rsync [옵션] /path/to/source /path/to/destination.
[옵션]은 매뉴얼에서 찾을 수 있는 명령줄 옵션을 나타냅니다:
man rsync
매뉴얼을 종료하려면 q를 누르십시오.
파일을 복사하려면:
rsync /bin/ls .위 명령은 rsync /bin/ls /home/your_username와 동등합니다. 이는 “ls” 명령어를 현재 위치한 디렉토리로 복사합니다. 기본적으로 이는 /home/your_username이어야 합니다. 점 .은 현재 디렉토리를 나타냅니다. 경로는 절대 경로( /home/your_username/Downloads/chrome.zip) 또는 현재 디렉토리와 상대적으로( Downloads/chrome.zip) 지정할 수 있습니다.
매우 큰 파일을 다룰 때는 다음 명령어를 사용할 수 있습니다:
rsync -P /path/to/file /path/to/destination이 명령은 진행 상황을 보여주고 중단된 전송을 재개할 수 있게 해줍니다. 재개해야 할 경우에는 다음을 사용하십시오:
rsync -P --append /path/to/file /path/to/destination--append 없이 전송은 처음부터 다시 시작됩니다.
디렉토리를 동기화하려면:
rsync -av /path/to/source /path/to/destination예제 명령어:
rsync -av /bin .rsync의 끝 슬래시 효과 (중요)
이전 에서 제공한 명령어에 주목하십시오. 소스 디렉토리의 경로에는 끝 슬래시 /가 없습니다(/bin과 /bin/의 차이). 끝 슬래시가 없으면 rsync는 디렉토리 자체를 복사합니다. 따라서 rsync -av /bin .는 다음 이미지에 있는 결과를 초래합니다.

끝 슬래시가 사용될 경우 rsync는 해당 디렉토리 내의 내용을 복사합니다. 이 경우, /bin의 모든 파일이 목적지 디렉토리 주변에 흩어지게 됩니다. 그러므로 rsync -av /bin/ .는 다음 이미지에 있는 결과를 초래합니다.

이 차이를 기억하는 것은 매우 중요합니다. TAB키를 사용하여 디렉토리 이름을 자동 완성하면 끝에 슬래시가 자동으로 추가되기 때문입니다. 따라서 이것을 염두에 두어 목적지 디렉토리에 엉망이 생기는 것을 피하십시오.
원격 위치(예: 서버)와 동기화하기 위해 rsync 사용하기
이전 섹션에서 설명한 내용은 원격 위치 작업 시에도 동일하게 적용됩니다. 유일한 차이점은 원격 위치의 로그인 사용자 이름과 주소를 추가해야 한다는 것입니다. /bin 디렉토리를 원격 컴퓨터로 전송하려면 다음을 사용하십시오:
rsync -av /bin [email protected]:/home/your_usernamersync는 OpenSSH를 통해 연결됩니다. 이는 원격 위치에서 OpenSSH 서버 및 로그인 자격 증명을 미리 설정해야 함을 의미합니다. your_username은 서버에서 생성된 사용자 이름을 의미합니다. 이는 로컬 머신에서 사용하는 사용자 이름과 다를 수 있습니다.
도메인 이름을 소유하고 이를 서버 IP로 포인트하면, 명령에서 도메인을 사용할 수 있습니다:
rsync -av /bin [email protected]:/home/your_username대량 전송 시, -z 매개변수를 추가하여 전송하기 전에 데이터를 압축하는 것이 유용합니다:
rsync -avz /bin [email protected]:/home/your_username이미 압축된 파일(예: MP3와 같은 오디오 파일, 비디오 파일, JPEG 이미지)을 전송할 경우 압축 매개변수를 생략할 수 있습니다. 압축할 수 없는 파일이라면 -z를 사용하는 것은 시간 낭비입니다.
원격 대상에서 로컬 컴퓨터로 파일을 복사하려면 단순히 위치를 바꾸면 됩니다:
rsync -avz [email protected]:/bin /home/your_username결론
이것은 알아야 할 가장 중요한 rsync 명령어를 다룹니다. 디렉토리를 동기화하는 방법에 대해 더 많은 제어가 필요할 경우, 온라인 rsync 매뉴얼을 참조하고 “옵션 요약”을 찾을 때까지 몇 페이지를 스크롤하십시오.