본문 바로가기

Ubuntu/linux Command

Linux Command (rsync)

728x90

로컬 또는 원격에 파일이나 디렉토리를 복사하기

  • rsync: Remote sync의 줄임말로 여러가지 옵션을 이용해 원격 또는 로컬간에 파일이나 디렉토리를 복사하는 툴.
  • rcp 그리고 scp와 같이 파일이나 디렉토리를 복사할 때 사용하는 기본 내장 명령어. 원격 컴퓨터에 파일이나 디렉토리를 전달할 수 있을뿐만 아니라 로컬로도 복사가 가능. 반대로 원격에 있는 디렉토리나 파일들을 가져올수도 있음.
  • 옵션이 정말 다양하게 많으며 많은 옵션들을 이용해 다양한 기능들을 활용할 수 있음.(symlink 유지, 권한 유지 그리고 파일 날짜 유지와 같은 기능들)

 

구문 :  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: 전송시 진행상황을 보여줍니다.

 

local -> local

 

용례1 : rsync -a src/ dest   

   src 아래 directory만  dest 아래 생성됨

    

용례2 : rsync -a src  dest

     src directory와 그 아래 directory가  dest 아래 생성됨

 

 

local -> remote

web hosting 을 위한 server repository 에 directory 전체를 sync up 하려고 할 때 사용됨.

 

용례3 : rsync -azP ~/wget_test/  pidokige@192.168.25.24:~/rsync_test/

 

위의 명령을 실행한 test environment

ubuntu20.04 for WSL   : IP (192,168.25.57)

ubuntu20.04 running on virtualbox : IP (192,168.25.38) 

 

home 아래 wget_test directory를 remote의 ~/rsync_test/ 에  clone 할때 사용함
이후 password 를 입력한다.

 

용례3 :

rsync -avz -e  'ssh -i ./ssh_key/ubuntu_virtualbox/id_rsa' ~/wget_test/  pidokige@192.168.25.24:~/rsync_test/

 

'ssh -i ./ssh_key/ubuntu_virtualbox/id_rsa' : ssh key 를 이용하여 접근할 경우 사용하고 single quotaton' '을 이용하여 감싸주어야 한다. double quotaton " "을 이용하면 동작하지 않았다. 

~/wget_test/  : source home/weget_test directory아래 모든 data

pidokige@192.168.25.24:~/rsync_test/ :  target machine(pidokige@192.168.25.24)의 home/rsync_test/ 로 cloning 하게한다.

 

other sample

rsync -av — progress -e 'ssh -i ./ssh_key/ubuntu_virtualbox/id_rsa' ~/wget_test/  pidokige@192.168.25.24:~/rsync_test/

 

 

용례4 : rsync -avz -e  'ssh -i ./awspwd.pem' ./GitHub/ubuntu/rsync/src/ ubuntu@3.38.95.40:~

아래는 AWS 에서 만든 instance에 file 을 전송하려고 할때 확인한  명령어임

 

 

 

 

'Ubuntu > linux Command' 카테고리의 다른 글

Linux command (scp)  (0) 2021.09.05
Linux command : SSH  (0) 2021.09.05
Linux System Command (awk)  (0) 2021.08.16
Linux System Command ( kill )  (0) 2021.08.16
Linux System Command (free)  (0) 2021.08.12