예2) 로컬로 디렉토리 복사 또는 동기화 (rsync -zavh)
pkumar 사용자의 홈 디렉토리를 /opt/backup 폴더로 복사 또는 동기화하고, -zavh 옵션으로 아래 rsync 명령을 실행
[root@gateway ~]# rsync -zavh /home/pkumar /opt/backup
sending incremental file list
pkumar/
pkumar/.bash_logout
pkumar/.bash_profile
pkumar/.bashrc
pkumar/OpenStack-Networking.pdf
sent 4.09M bytes received 96 bytes 8.19M bytes/sec
total size is 6.15M speedup is 1.50
[root@gateway ~]#
디렉토리가 복사되었는지 여부를 확인하고, 아래 명령을 실행
[root@gateway ~]# ls -ld /opt/backup/*
-rwx------. 1 root root 6153239 Apr 7 00:25 /opt/backup/OpenStack-Networking.pdf
drwx------. 2 pkumar pkumar 90 Apr 7 00:25 /opt/backup/pkumar
[root@gateway ~]#
보시다시피“pkumar”디렉토리가 대상 폴더에 생성되고 그 내용도 복사됩니다. 위의 예에서 소스 폴더 (/ home / pkumar /) 뒤에 trail /를 사용하면 rsync 명령은 대상에 pkumar 디렉토리를 만들지 않지만 내용 만 복사합니다.
[ root @ gateway ~] # rsync -zavh /home/pkumar/ /opt/backup
예3) 파일 및 디렉토리를 재귀적으로 로컬로 복사 (rsync -zrvh 또는 rsync -zavh)
pkumar 사용자 홈 디렉토리 내에 여러 파일과 디렉토리가 있다고 가정하고, rsync 명령 아래를 사용하여 파일과 디렉토리를 재귀 적으로 복사하고, -a 또는 -r 옵션을 사용하여 파일과 디렉토리를 재귀적으로 복사하십시오.
참고
: rsync 명령에서
-a
옵션은 복사 또는 동기화 중 아카이브에 사용되며 아카이브와 별도로 -a 옵션은 다음에 사용됩니다.
- 파일과 디렉토리를 재귀적으로 복사
- 심볼릭 링크를 심볼릭 링크로 복사
- 권한 유지
- 그룹 유지
- 수정 시간 유지
- 소유권 유지
[ root @ gateway ~] # rsync -zrvh / home / pkumar / opt / backup
또는
[ root @ gateway ~] # rsync -zavh / home / pkumar / opt / backup
예4) 파일 및 디렉토리를 로컬에서 원격 시스템으로 복사 또는 동기화
"
/home/pkumar/techi
" 폴더를 로컬 컴퓨터에서 /opt 아래의 원격 컴퓨터 (192.168.1.29) 로 복사한다고 가정하겠습니다.
[root@gateway ~]# rsync -zarvh /home/pkumar/techi root@192.168.1.29:/opt
root@192.168.1.29's password:
…………………………………………………………
techi/OTRS/
techi/OTRS/Database-Selection-OTRS-Installation-CentOS7.jpg
techi/OTRS/Install-OTRS-Accept-License.png
techi/OTRS/Install-OTRS-CentOS7-RHEL7.jpg
techi/OTRS/mysql-secure-installation-centos7-part2.jpg
sent 34.85M bytes received 2.65K bytes 6.34M bytes/sec
total size is 37.77M speedup is 1.08
……………………………………………………………
[root@gateway ~]#
예5) 원격 시스템에서 로컬 시스템으로 파일 및 디렉토리 복사 또는 동기화
원격 시스템 (192.168.1.29)에서 로컬 시스템으로 파일과 디렉토리를 복사하려고한다고 가정합니다. 아래 예 에서 로컬 시스템의 /tmp 폴더 아래에있는
"/opt/rpms_db
" 라는 원격 폴더를 복사하고 있습니다.
[root@gateway ~]# rsync -zarvh root@192.168.1.29:/opt/rpms_db /tmp
root@192.168.1.29's password:
receiving incremental file list
……………………………………………………………
rpms_db/
rpms_db/httpd-2.4.6-88.el7.centos.x86_64.rpm
rpms_db/httpd-tools-2.4.6-88.el7.centos.x86_64.rpm
rpms_db/postfix-2.10.1-7.el7.x86_64.rpm
rpms_db/pytalloc-2.1.13-1.el7.x86_64.rpm
rpms_db/samba-4.8.3-4.el7.x86_64.rpm
rpms_db/samba-client-libs-4.8.3-4.el7.x86_64.rpm
rpms_db/samba-common-4.8.3-4.el7.noarch.rpm
rpms_db/samba-common-libs-4.8.3-4.el7.x86_64.rpm
rpms_db/samba-common-tools-4.8.3-4.el7.x86_64.rpm
rpms_db/samba-libs-4.8.3-4.el7.x86_64.rpm
sent 484 bytes received 15.45M bytes 1.07M bytes/sec
total size is 16.37M speedup is 1.06
[root@gateway ~]#
위의 명령은 자동으로 로컬 컴퓨터의 /tmp 폴더에“rpms_db”폴더를 만듭니다.
[root@gateway ~]# rsync -zarvh -e ssh root@192.168.1.29:/opt/rpms_db /tmp
root@192.168.1.29's password:
receiving incremental file list
………………………………………………………………………………
rpms_db/
rpms_db/httpd-2.4.6-88.el7.centos.x86_64.rpm
rpms_db/httpd-tools-2.4.6-88.el7.centos.x86_64.rpm
rpms_db/postfix-2.10.1-7.el7.x86_64.rpm
rpms_db/pytalloc-2.1.13-1.el7.x86_64.rpm
rpms_db/samba-4.8.3-4.el7.x86_64.rpm
rpms_db/samba-client-libs-4.8.3-4.el7.x86_64.rpm
rpms_db/samba-common-4.8.3-4.el7.noarch.rpm
rpms_db/samba-common-libs-4.8.3-4.el7.x86_64.rpm
rpms_db/samba-common-tools-4.8.3-4.el7.x86_64.rpm
rpms_db/samba-libs-4.8.3-4.el7.x86_64.rpm
sent 484 bytes received 15.45M bytes 1.82M bytes/sec
total size is 16.37M speedup is 1.06
[root@gateway ~]#
예6) 동기화 중 원격 쉘 지정 (rsync -e ssh)
rsync 명령에서 동기화하는 동안 ssh와 같은 원격 셸을 지정할 수 있습니다. rsync를 통해 소스와 대상 컴퓨터 간의 보안 통신을 사용하고 ssh를 원격 셸로 사용해야한다고 가정 해 보겠습니다. 예는 다음과 같습니다.
[root@gateway ~]# rsync -zarvh -e ssh root@192.168.1.29:/opt/rpms_db /tmp
root@192.168.1.29's password:
receiving incremental file list
………………………………………………………………………………
rpms_db/
rpms_db/httpd-2.4.6-88.el7.centos.x86_64.rpm
rpms_db/httpd-tools-2.4.6-88.el7.centos.x86_64.rpm
rpms_db/postfix-2.10.1-7.el7.x86_64.rpm
rpms_db/pytalloc-2.1.13-1.el7.x86_64.rpm
rpms_db/samba-4.8.3-4.el7.x86_64.rpm
rpms_db/samba-client-libs-4.8.3-4.el7.x86_64.rpm
rpms_db/samba-common-4.8.3-4.el7.noarch.rpm
rpms_db/samba-common-libs-4.8.3-4.el7.x86_64.rpm
rpms_db/samba-common-tools-4.8.3-4.el7.x86_64.rpm
rpms_db/samba-libs-4.8.3-4.el7.x86_64.rpm
sent 484 bytes received 15.45M bytes 1.82M bytes/sec
total size is 16.37M speedup is 1.06
[root@gateway ~]#
예7) rsync 명령 출력에서 동기화 진행률 표시
rsync 명령에서 동기화 또는 복사 진행률을 보려면 "
–progress
" 를 사용하십시오 . 예는 다음과 같습니다.
[root@gateway ~]# rsync -avh --progress root@192.168.1.29:/opt/rpms_db /tmp
root@192.168.1.29's password:
receiving incremental file list
……………………………………………………………………………………………………..
rpms_db/
rpms_db/httpd-2.4.6-88.el7.centos.x86_64.rpm
2.84M 100% 35.22MB/s 0:00:00 (xfr#6, to-chk=18/25)
rpms_db/httpd-tools-2.4.6-88.el7.centos.x86_64.rpm
92.50K 100% 1.13MB/s 0:00:00 (xfr#7, to-chk=17/25)
rpms_db/postfix-2.10.1-7.el7.x86_64.rpm
2.56M 100% 14.44MB/s 0:00:00 (xfr#17, to-chk=7/25)
rpms_db/samba-4.8.3-4.el7.x86_64.rpm
696.47K 100% 3.71MB/s 0:00:00 (xfr#19, to-chk=5/25)
rpms_db/samba-client-libs-4.8.3-4.el7.x86_64.rpm
5.07M 100% 19.90MB/s 0:00:00 (xfr#20, to-chk=4/25)
rpms_db/samba-common-4.8.3-4.el7.noarch.rpm
210.98K 100% 844.42kB/s 0:00:00 (xfr#21, to-chk=3/25)
rpms_db/samba-common-libs-4.8.3-4.el7.x86_64.rpm
167.51K 100% 667.70kB/s 0:00:00 (xfr#22, to-chk=2/25)
rpms_db/samba-common-tools-4.8.3-4.el7.x86_64.rpm
458.38K 100% 1.77MB/s 0:00:00 (xfr#23, to-chk=1/25)
rpms_db/samba-libs-4.8.3-4.el7.x86_64.rpm
282.33K 100% 1.09MB/s 0:00:00 (xfr#24, to-chk=0/25)
sent 484 bytes received 16.38M bytes 3.64M bytes/sec
total size is 16.37M speedup is 1.00
[root@gateway ~]#
예8) 파일을 복사하지 않고 디렉토리 구조 복사
파일을 건너 뛰는 디렉토리 구조를 로컬 시스템에서 원격으로 또는 그 반대로 복사하려는 시나리오가 있습니다."/ home / pkumar"의 디렉토리 구조를 로컬 컴퓨터에서 / opt 폴더 아래의 원격 컴퓨터 (192.168.1.29)로 복사한다고 가정하겠습니다.
root@gateway ~]# rsync -av -f"+ */" -f"- *" /home/pkumar root@192.168.1.29:/opt/
root@192.168.1.29's password:
building file list ... done
………………………………………………
pkumar/
sent 43 bytes received 19 bytes 17.71 bytes/sec
total size is 0 speedup is 0.00
[root@gateway ~]#
예9) scp에서 실패한 후 대용량 파일 전송 재개
Linux 관리자 프로파일에는 scp 명령을 사용하여 더 큰 파일을 복사하기 시작한 시나리오가 있지만 중간에 종료되어 크기와 시간이 많이 걸리므로 scp를 사용하여 다시 복사 할 수 없습니다.따라서이 상황에서 rsync 명령은 파일을 중단 또는 종료 된 위치에서 파일 복사를 시작할 수 있으므로 사용할 수 있습니다. 즉, rsync는 scp 명령을 사용하여 부분적으로 복사 된 파일을 전송할 수 있습니다. 예는 아래와 같습니다.
[root@gateway ~]# scp root@192.168.1.29:/root/ubuntu-18.04-desktop-amd64.iso /opt
root@192.168.1.29's password:
ubuntu-18.04-desktop-amd64.iso 28% 526MB 61.5MB/s 00:21 ETA
^CKilled by signal 2.
[root@gateway ~]#
[root@gateway ~]# rsync -P --rsh=ssh root@192.168.1.29:/root/ubuntu-18.04-desktop-amd64.iso /opt
root@192.168.1.29's password:
ubuntu-18.04-desktop-amd64.iso
1,921,843,200 100% 18.47MB/s 0:01:39 (xfr#1, to-chk=0/1)
[root@gateway ~]#
예10) 소스에없는 경우 대상에서 파일 삭제 (–delete)
소스에서 대상으로 및 소스에서 파일을 이미 동기화 한 경우 파일을 삭제 한 경우 –delete 옵션을 사용하여 rsync 명령이 대상에서 파일을 삭제하도록 할 수 있습니다. 예는 다음과 같습니다.
[root@app ~]# rsync -avz --delete /opt/rpms_db root@192.168.1.28:/tmp/rpms_db
root@192.168.1.28's password:
sending incremental file list
deleting rpms_db/apr-util-1.5.2-6.el7.x86_64.rpm
deleting rpms_db/apr-1.4.8-3.el7_4.1.x86_64.rpm
rpms_db/
sent 862 bytes received 105 bytes 276.29 bytes/sec
total size is 15,947,152 speedup is 16,491.37
[root@app ~]#
예11) 파일 전송 크기 제한 (–max-size)
rsync를 사용하여 큰 파일을 전송하거나 복사하지 않으려면 '–
max-size = {specify-size-here}'
옵션을 사용 하십시오 . 파일을 전송하고 싶지 않다고 가정합니다 크기가 500K 이상입니다.참고 : 크기를 MB 단위로 지정하려면 M을 사용하고 GB에 대해서는 G를 사용하십시오.
[ root @ app ~] # rsync -avz --max-size = '500K'/opt/rpms_db root@192.168.1.28:/ tmp
예12) 대상에서 수정 된 파일을 동기화 / 복사하지 마십시오
대상에서 파일을 수정 한 일부 시나리오가 있으며 동기화하는 동안 수정 된 파일을 소스에서 덮어 쓰고 싶지 않으므로 rsync 명령의
-u
옵션을 사용하여 쉽게 수행 할 수 있습니다.
[root@gateway ~]# rsync -avzu root@192.168.1.29:/opt/techi /home/pkumar/techi
root@192.168.1.29's password:
receiving incremental file list
sent 37 bytes received 4,960 bytes 1,427.71 bytes/sec
total size is 37,771,649 speedup is 7,558.87
[root@gateway ~]#
예13) 동기화 후 소스에서 파일 제거 (–remove-source-files)
rsync 명령을 사용하여 동기화가 완료되면 소스에서 파일을 삭제한다고 가정 해 봅시다. 아래 예에서 로컬 시스템 "
/home/pkumar/techi.tgz
"의 폴더는 원격 시스템 (192.168.1.29)에 동기화되며 동기화가 완료되면 소스에서 파일이 삭제됩니다.
[root@gateway ~]# rsync --remove-source-files -zvh /home/pkumar/techi.tgz root@192.168.1.29:/opt
root@192.168.1.29's password:
techi.tgz
sent 597 bytes received 43 bytes 182.86 bytes/sec
total size is 518 speedup is 0.81
[root@gateway ~]#
[root@gateway ~]# ls -l /home/pkumar/techi.tgz
ls: cannot access /home/pkumar/techi.tgz: No such file or directory
[root@gateway ~]#
예14) 실제 동기화 전 Dry run rsync 명령
rsync 명령의 동작과 관련이없는 상황이있을 수 있으므로 그러한 경우 rsync를 Dry run하는 것이 좋습니다
[root@gateway ~]# rsync --dry-run --remove-source-files -zvh /home/pkumar/projects.tar root@192.168.1.29:/opt
root@192.168.1.29's password:
projects.tar
sent 51 bytes received 19 bytes 7.37 bytes/sec
total size is 981.24M speedup is 14,017,682.29 (DRY RUN)
[root@gateway ~]#
예15) rsync와 동기화하는 동안 파일 포함 및 제외
특정 유형의 파일 및 디렉토리를 복사 또는 동기화하고 특정 유형의 파일 또는 디렉토리를 제외하려는 경우가 있습니다. Rsync 명령은 포함 및 제외 옵션을 모두 지원합니다.아래 예제에서는 pdf 및 rpm 유형의 파일을 복사하고 png 파일 유형을 제외하려고합니다.
[root@gateway ~]# rsync -avz -e ssh --include '*.pdf *.rpm' --exclude '*.png' /home/pkumar/techi root@192.168.1.29:/opt
root@192.168.1.29's password:
sending incremental file list
techi/
techi/OpenStack-Networking.pdf
techi/httpd-2.4.6-88.el7.centos.x86_64.rpm
techi/httpd-tools-2.4.6-88.el7.centos.x86_64.rpm
techi/postfix-2.10.1-7.el7.x86_64.rpm
sent 9,469,912 bytes received 96 bytes 2,705,716.57 bytes/sec
total size is 11,647,907 speedup is 1.23
[root@gateway ~]#
예16) rsync (–bwlimit = <KB/s>)에서 데이터 전송 속도 제한
rsync 명령에서 한 시스템에서 다른 시스템으로의 데이터 전송에 대한 대역폭 제한을 설정할 수 있습니다. rsync 명령에서 '
–bwlimit=<KB/S>
'옵션을 사용하여 데이터 전송 속도를 제한하십시오.최대 데이터 전송 속도 (속도)를 rsync로 600KB/s로 설정한다고 가정합니다. 예는 다음과 같습니다.
[root@gateway ~]# rsync -avz --progress --bwlimit=600 /home/pkumar/techi root@192.168.1.29:/opt
root@192.168.1.29's password:
sending incremental file list
techi/
techi/OpenStack-Networking.pdf
6,153,239 100% 910.02kB/s 0:00:06 (xfr#1, to-chk=6/8)
techi/httpd-2.4.6-88.el7.centos.x86_64.rpm
2,844,028 100% 615.28kB/s 0:00:04 (xfr#2, to-chk=5/8)
techi/httpd-tools-2.4.6-88.el7.centos.x86_64.rpm
92,504 100% 507.51kB/s 0:00:00 (xfr#3, to-chk=4/8)
techi/pkumar-2.png
0 100% 0.00kB/s 0:00:00 (xfr#4, to-chk=3/8)
techi/pkumar-3.png
0 100% 0.00kB/s 0:00:00 (xfr#5, to-chk=2/8)
techi/pkumar.png
0 100% 0.00kB/s 0:00:00 (xfr#6, to-chk=1/8)
techi/postfix-2.10.1-7.el7.x86_64.rpm
2,558,136 100% 594.80kB/s 0:00:04 (xfr#7, to-chk=0/8)
sent 9,470,087 bytes received 153 bytes 485,653.33 bytes/sec
total size is 11,647,907 speedup is 1.23
[root@gateway ~]#
예17) 소스와 대상의 파일 및 디렉토리의 차이점보기
rsync 명령에서 “
-i
”옵션을 사용 하여 소스와 대상 사이의 파일과 디렉토리의 차이점을 나열하십시오. 예는 아래와 같습니다.
[root@gateway ~]# rsync -avzi /home/pkumar/techi root@192.168.1.29:/opt
root@192.168.1.29's password:
sending incremental file list
.d..t...... techi/
<f.st...... techi/projects.txt
sent 438 bytes received 45 bytes 138.00 bytes/sec
total size is 11,648,064 speedup is 24,116.07
[root@gateway ~]#
위의 명령 출력에 따라 대상에서“projects.txt”라는 파일에 차이가 있습니다. 위 출력에서 키워드의 의미는 다음과 같습니다.
- d : 대상 파일의 변경을 나타냅니다
- f : 파일을 나타냅니다
- t : 타임 스탬프의 변화를 나타냅니다
- s : 크기 변화를 나타냅니다