[Linux] rsync를 이용해 로컬 또는 원격에 파일이나 디렉토리를 복사하기
업데이트(2021.02.27): 원격에 있는 파일이나 디렉토리를 복사해오는 내용 추가
Linux 기반 운영체제에서 rsync 명령어에 대해서 알아보자.
환경 및 선수조건
- Linux
- Bash shell(/bin/bash)
rsync 명령어
기본
rsync
: Remote sync의 줄임말로 여러가지 옵션을 이용해 원격 또는 로컬간에 파일이나 디렉토리를 복사하는 툴입니다.rcp
그리고scp
와 같이 파일이나 디렉토리를 복사할 때 사용하는 기본 내장 명령어입니다. 원격 컴퓨터에 파일이나 디렉토리를 전달할 수 있을뿐만 아니라 로컬로도 복사가 가능합니다. 반대로 원격에 있는 디렉토리나 파일들을 가져올수도 있습니다.- 옵션이 정말 다양하게 많으며 많은 옵션들을 이용해 다양한 기능들을 활용할 수 있습니다.(symlink 유지, 권한 유지 그리고 파일 날짜 유지와 같은 기능들)
기본 사용법
- manual page에 있는 자료
rsync [options ...] [source] [target]
옵션
-v
: verbosity를 높이는 옵션으로 복사하는 과정을 더 자세하게 보여줍니다.-z
: compress를 주는 옵션으로 파일을 복사할 때 압축해서 복사합니다.-h
: 사람이 읽기 쉬운 형태로 복사 결과들을 출력해줍니다.-a (same as -rlptgoD)
: archive 모드로-rlptgoD
옵션을 적용한것과 같습니다. 해당 옵션들은 아래서 설명하며 symlink, 권한 그리고 timestamp와 같은 속성들을 그대로 복사합는 옵션입니다.-r
: 디렉토리를 복사할 때 사용하는 옵션입니다.-l
: symlink는 symlink 형태로 복사하는 옵션입니다.-p
: 파일과 디렉토리들의 권한을 유지하는 옵션입니다.-t
: 수정시간을 유지하는 옵션입니다.-g
: 그룹 속성을 유지하는 옵션입니다.-o
: 소유자 속성을 유지하는 옵션입니다.-e
: 원격에서 사용할 쉘을 명시하는 옵션입니다.-D (same as --devices --specials)
:--devices --specials
의 옵션과 같습니다.--devices
: root 권한이 필요하며 Device 관련된 파일들을 복사해서 생성해줍니다.--specials
: named socket이나 fifo와 같은 특수한 파일들도 복사하는 옵션입니다.-P (same as --partial --progress)
:--partial --progress
의 옵션과 같습니다.--partial
: rsync는 전송중에 인터럽트가 발생하면 전송하던 파일을 삭제하는게 기본값입니다. 이 옵션을 사용하면 전송된 부분파일을 남기고 다음부분부터 재전송 할 수 있게하여 속도를 빠르게 할 수 있습니다.--progress
: 전송시 진행상황을 보여줍니다.
예제
- 로컬로 파일 복사
# rsync [File Name] [Target Path]
rsync -avzhP test.txt /tmp
# 전송시 파일명 변경도 가능
rsync -avzhP test.txt /tmp/test-renamed.txt
- 로컬로 디렉토리 복사
# rsync [Directory Name] [Target Path]
# 디렉토리 자체가 복사된다.
rsync -avzhP test-directory /tmp
# 디렉토리 내 파일들과 하위 디렉토리들 복사
# rsync [Directory Name]/ [Target Path]
rsync -avzhP test-directory/ /tmp
- 원격에 파일 복사
# rsync [File Name] [User]@[IP Address]:[Path]
rsync -avzhP test.txt twpower-private-server:~
rsync -avzhP test.txt twpower@192.168.1.2:~
# 전송시 파일명 변경도 가능
rsync -avzhP test.txt twpower-private-server:~/test-renamed.txt
rsync -avzhP test.txt twpower@192.168.1.2:~/test-renamed.txt
- 원격에 디렉토리 복사
# rsync [Directory Name] [User]@[IP Address]:[Path]
# 디렉토리 자체가 복사된다.
rsync -avzhP test-directory twpower-private-server:~
rsync -avzhP test-directory twpower@192.168.1.2:~
# 디렉토리 내 파일들과 하위 디렉토리들 복사
# rsync [Directory Name]/ [User]@[IP Address]:[Path]
rsync -avzhP test-directory/ twpower-private-server:~
rsync -avzhP test-directory/ twpower@192.168.1.2:~
- 원격에 있는 파일 로컬로 가져오기
# rsync [User]@[IP Address]:[File Name] [Path]
rsync -avzhP twpower-private-server:~/test.txt .
rsync -avzhP twpower@192.168.1.2:~/test.txt .
# 전송시 파일명 변경도 가능
rsync -avzhP twpower-private-server:~/test.txt ./test-renamed.txt
rsync -avzhP twpower@192.168.1.2:~test.txt ./test-renamed.txt
- 원격에 있는 디렉토리 로컬로 가져오기
# rsync [User]@[IP Address]:[Directory Name] [Path]
# 디렉토리 자체가 복사된다.
rsync -avzhP twpower-private-server:~/test-directory .
rsync -avzhP twpower@192.168.1.2:~/test-directory .
# 디렉토리 내 파일들과 하위 디렉토리들 복사
# rsync [User]@[IP Address]:[Directory Name]/ [Path]
rsync -avzhP twpower-private-server:~/test-directory/ .
rsync -avzhP twpower@192.168.1.2:~/test-directory/ .