Linux/Linux(CentOS)

[Linux] rsync 사용하여 원격 파일, 디렉토리 복사하기

roundfigure 2021. 7. 20. 13:59

 

rsync

  • 서로 다른 두 컴퓨터에 컴퓨터에 들어 있는 정보를 서로 동기화 시킬때 사용한다. 동일한 소스가 두군대 존재하고 한쪽을 편집했을때, 다른 한쪽에 편집한 부분을 업데이트 시켜줘야 한다. 이때 rsync는 수정된 부분만 비교해서 옮겨준다

 

사용법

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: 소유자 속성을 유지하는 옵션입니다.
  • -D (same as --devices --specials): --devices --specials의 옵션과 같습니다.
  • --devices: root 권한이 필요하며 Device 관련된 파일들을 복사해서 생성해줍니다.
  • --specials: named socket이나 fifo와 같은 특수한 파일들도 복사하는 옵션입니다.
  • -P (same as --partial --progress): --partial --progress의 옵션과 같습니다.
  • --partial: rsync는 전송중에 인터럽트가 발생하면 전송하던 파일을 삭제하는게 기본값입니다. 이 옵션을 사용하면 전송된 부분파일을 남기고 다음부분부터 재전송 할 수 있게하여 속도를 빠르게 할 수 있습니다.
  • --progress: 전송시 진행상황을 보여줍니다.

 

 

ex)

  • 로컬로 파일 복사
# 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/ .

 

 

출처

https://twpower.github.io/153-copy-file-or-directory-using-rsync-command