Linux

[리눅스] rsync 명령어 완벽 가이드 사용법(동기화)

인생아 2024. 10. 12. 12:07
반응형

rsync는 파일과 디렉터리를 로컬 또는 원격 서버 간에 동기화할 때 사용하는 강력한 도구이다. 특히 네트워크 상에서 효율적인 백업복제 작업에 많이 사용된다. rsync는 전송할 데이터 중 변경된 부분만 전송하므로 대용량 데이터 전송 시에도 속도와 효율성이 뛰어나다.

rsync의 주요 기능

  1. 로컬 및 원격 데이터 동기화: 로컬 디렉터리 간 또는 원격 서버 간 데이터를 복사하거나 동기화할 수 있다.
  2. 차등 백업: 전체 파일이 아닌 변경된 부분만 전송하므로 전송 시간을 단축하고 네트워크 사용량을 절약한다.
  3. SSH를 통한 보안 전송: 기본적으로 SSH를 통해 데이터를 안전하게 전송할 수 있다.
  4. 압축 기능: 전송 중 데이터를 압축하여 전송 속도를 높일 수 있다.
  5. 퍼미션, 심볼릭 링크, 소유자 정보 보존: 파일의 퍼미션, 심볼릭 링크, 소유자 및 그룹 정보까지 동일하게 유지한다.

rsync 명령어 기본 구문

rsync [옵션] 소스 대상
  • 소스: 복사할 파일이나 디렉터리
  • 대상: 파일이 복사될 위치 (로컬 또는 원격)

주요 옵션

  • -a: 아카이브 모드로, 파일의 퍼미션, 소유자, 타임스탬프 등을 유지하며 동기화.
  • -v: 자세한 정보 출력. 파일이 전송될 때 자세한 정보를 보여줌.
  • -z: 전송 시 압축하여 전송 속도 향상.
  • -P: 진행 상황 표시 및 중단된 파일 복구.
  • -r: 디렉터리 재귀적 복사.
  • --delete: 대상 위치에서 소스와 다르면 파일 삭제.

rsync 로컬 디렉터리 복사 예시

다음은 /home/user/Documents 디렉터리 내용을 /home/user/backup 디렉터리로 복사하는 예제다.

user@linux:~$ rsync -avz /home/user/Documents /home/user/backup
sending incremental file list
Documents/
Documents/file1.txt
Documents/file2.txt

sent 1,204 bytes  received 48 bytes  502.25 bytes/sec
total size is 1,100  speedup is 0.88
user@linux:~$

이 명령은 파일 퍼미션타임스탬프를 유지하면서 압축하여 전송한다.

rsync를 사용한 원격 서버 간 파일 복사 예시

원격 서버로 파일을 전송하려면 SSH를 이용하여 다음과 같이 사용할 수 있다. 예를 들어 로컬 서버의 /home/user/Documents 디렉터리를 원격 서버의 /home/remoteuser/backup으로 복사하는 명령은 아래와 같다.

user@linux:~$ rsync -avz -e ssh /home/user/Documents remoteuser@192.168.0.1:/home/remoteuser/backup
remoteuser@192.168.0.1's password:
sending incremental file list
Documents/
Documents/file1.txt
Documents/file2.txt

sent 1,304 bytes  received 58 bytes  542.48 bytes/sec
total size is 1,100  speedup is 0.84
user@linux:~$

이 경우, SSH를 통해 원격 서버에 연결되며, 데이터가 암호화된 상태로 전송된다. 전송 완료 후, 복사된 파일 목록과 전송 속도가 표시된다.

--delete 옵션을 사용한 동기화 예시

다음 예제는 원본에는 없지만, 백업 폴더에 있는 파일을 삭제하는 옵션이다. 즉, 원본과 백업 폴더를 동기화하여 불필요한 파일을 지운다.

user@linux:~$ rsync -avz --delete /home/user/Documents /home/user/backup
sending incremental file list
deleting oldfile.txt
Documents/
Documents/file1.txt
Documents/file2.txt

sent 1,404 bytes  received 58 bytes  622.75 bytes/sec
total size is 1,100  speedup is 0.79
user@linux:~$

--delete 옵션을 사용하여 백업 디렉터리의 oldfile.txt를 삭제한다.

rsync 명령어 요약

rsync는 로컬과 원격 서버 간의 데이터를 효율적으로 백업하고 동기화하는 데 적합한 도구이다. 변경된 부분만 전송하고, SSH를 통한 보안 전송과 압축 기능을 제공하여 네트워크 사용을 최소화한다. 또한, 여러 옵션을 통해 세부적으로 동작을 제어할 수 있어 매우 유용하다.

참고사이트:

반응형