Rsync 服務部署與引數詳解
Rsync 簡介
rsync 是一款開源的、快速的、多功能的、可實現全量及增量的本地或遠端資料同步備份的優秀工具。Rsync軟體適用於unix/linux/windows等多種作業系統平臺。
傳統的 scp 和 cp 工具拷貝每次均為完整拷貝,而rsync除了可以完整拷貝外,還具備增量拷貝功能。因此,從同步資料的效能及效率上,Rsync工具更勝一籌。
官網地址:
1 https://download.samba.org/pub/rsync/rsync.html 2 # 或者 3 https://www.samba.org/ftp/rsync/rsync.html
版本檢視
1 [yun@backup ~]$ rsync --version 2 rsync version 3.1.2 protocol version 31 3 Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others. 4 Web site: http://rsync.samba.org/ 5 Capabilities: 6 64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints, 7 socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace, 8 append, ACLs, xattrs, iconv, symtimes, prealloc 9 10 rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you 11 are welcome to redistribute it under certain conditions. See the GNU 12 General Public Licence for details.
Rsync 增量複製的原理
Rsync 通過 “quick check” 演算法 (預設情況) 找到要傳輸的檔案,該演算法會查詢大小已改變或最後修改時間已改變的檔案。
當 “quick check” 指示不需要更新檔案的資料 (即:檔案的內容) 時,會直接在目標檔案上更改其他屬性(如許可權資訊、屬主屬組資訊、時間戳資訊)「根據相應的選項引數」。
rsync2.x對比方法,把所有檔案比對一遍,然後進行同步。
rsync3.x對比方法,一邊比對差異,一邊對差異的部分進行同步。
Rsync 軟體功能介紹
rsync == cp
1 # 拷貝 /etc/rpm 目錄 2 [root@back ~]# cp -a /etc/rpm /tmp/ 3 # 等價於 4 [root@back ~]# rsync -a /etc/rpm /tmp/
注意:cp -a 的引數意義和 rsync -a 的引數意義不一樣。
rsync == scp
1 [yun@back tmp]$ scp -pr [email protected]:/etc/xml /tmp/ 2 # 等價於 3 [yun@back tmp]$ rsync -pr [email protected]:/etc/xml /tmp/
rsync == rm
刪除 /tmp/yum/ 目錄下的所有檔案和目錄。【千萬不要搞錯目錄】
1 [yun@back tmp]$ rm -fr /tmp/yum/* 2 # 等價於 3 [yun@back tmp]$ rsync -r --delete /tmp/zhang/ /tmp/yum/
其中 /tmp/zhang/ 目錄下無任何檔案
rsync == ls -l
1 [yun@backup tmp]$ ls -l /tmp/xml/catalog 2 -rw-r--r-- 1 yun yun 1171 Sep 18 16:08 /tmp/xml/catalog 3 # 類似於 4 [yun@backup tmp]$ rsync /tmp/xml/catalog 5 -rw-r--r-- 1,171 2019/09/18 16:08:41 catalog
Rsync 特性介紹
1、支援拷貝特殊檔案。如連結檔案、裝置等。
2、可以排除指定檔案或目錄的同步功能,相當於打包tar的排除功能。
3、可以做到保持原始檔或目錄的許可權、時間、軟連結、屬主、屬組等所有屬性均不改變。
4、可實現增量同步。既只同步發生變化的資料,因此傳輸效率很高,tar -N。
5、可以使用 rcp、rsh、ssh 等方式來配合傳輸檔案(rsync本身不對資料加密)。
6、可以通過socket(程序方式)傳輸檔案和資料(服務端和客戶端)【重點掌握】。
7、支援匿名或認證(無需系統使用者)的程序傳輸,可以實現方便安全的進行資料備份及映象。
Rsync 運用場景
資料備份使用方式:cron + rsync 比如資料庫備份,除了本地需要備份外,還需要通過 rsync 在專門的備份伺服器上備份一份。
實時同步使用方式:rsync + inotify 或 sersync 比如為了緩解伺服器壓力,我們需要將使用者上傳的圖片放在多臺伺服器上【如果沒有上 CDN】,這樣高併發訪問的時候可以分發到多臺機器,減輕伺服器壓力。
又比如敏感資料不能丟失,那必須做實時備份。
Rsync 使用說明
Rsync 傳輸方式分三種
1、單個主機本地內部之間的資料傳輸(此時類似於 cp 的功能)
2、藉助rcp,ssh等通道來傳輸資料(此時類似於 scp 的功能)
3、以守護程序方式傳輸資料(rsync 自身的重要功能)
1 # 本地資料同步方式 2 Local: rsync [OPTION...] SRC... [DEST] 3 4 # 遠端資料同步方式 5 Access via remote shell: 6 Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] 7 Push: rsync [OPTION...] SRC... [USER@]HOST:DEST 8 9 # 守護程序方式同步資料 10 Access via rsync daemon: 11 Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] 12 rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] 13 Push: rsync [OPTION...] SRC... [USER@]HOST::DEST 14 rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
源目錄後面無 “/“ 和有 “/“ 的區別
將 /etc/yum 目錄複製到 /tmp/zhang/ 目錄下。
1 # 源目錄後面無 "/" 2 [yun@backup ~]$ rsync -avz /etc/yum /tmp/zhang/ 3 [yun@backup ~]$ ll /tmp/zhang/ 4 total 0 5 drwxr-xr-x 6 yun yun 100 Nov 14 2018 yum
將 /etc/yum/ 目錄下的所有檔案和目錄,複製到 /tmp/zhang/ 目錄下。
1 # 源目錄後面有 "/" 2 [yun@backup ~]$ rsync -avz /etc/yum/ /tmp/zhang/ 3 [yun@backup ~]$ ll /tmp/zhang/ 4 total 4 5 drwxr-xr-x 2 yun yun 6 Apr 13 2018 fssnap.d 6 drwxr-xr-x 2 yun yun 54 Nov 14 2018 pluginconf.d 7 drwxr-xr-x 2 yun yun 26 Nov 14 2018 protected.d 8 drwxr-xr-x 2 yun yun 37 Apr 13 2018 vars 9 -rw-r--r-- 1 yun yun 444 Apr 13 2018 version-groups.conf
常用引數說明
引數 | 引數說明 |
---|---|
-v, –verbose | 顯示傳輸了哪些檔案 ★★★★★ |
-z, –compress | 傳輸時進行壓縮以提高傳輸效率,–compress-level=NUM 指定加壓縮級別。★★★★★ |
-P, –progress | 顯示同步的過程及傳輸時進度等資訊 ★★★★★ |
-a, –archive | 歸檔模式,表示以遞迴方式傳輸檔案,並保持檔案屬性。等價於 -rlptgoD ★★★★★ |
-r, –recursive | 對子目錄以遞迴模式,即目錄下的所有目錄都同樣傳輸【歸檔於-a】 |
-t, –times | 保持檔案時間資訊【歸檔於-a】 |
-o, –owner | 保持檔案屬主資訊【歸檔於-a】 |
-g, –group | 保持檔案屬組資訊【歸檔於-a】 |
-p, –perms | 保持檔案許可權資訊【歸檔於-a】 |
-D, –devieves | 保持裝置檔案資訊【歸檔於-a】 |
-l, –linkd | 保持軟連結資訊【歸檔於-a】 |
-L, –copy-links | 如果是連結檔案那麼轉為原始檔複製【複製軟連線的原始檔】 |
-e, –rsh=COMMAND | 使用通道協議,指定替代rsh的shell程式 |
–exclude=PATTERN | 指出哪些檔案或目錄不需要傳輸,支援萬用字元 |
–exclude-from=FILE | 在 FILE 檔案中指定哪些檔案或目錄不需要傳輸 |
–include=PATTERN | 指出哪些檔案或目錄不被排除要傳輸,支援萬用字元;通常配合 –exclude 或 –exclude-from 使用 |
–include-from=FILE | 在 FILE 檔案中指定哪些檔案或目錄不被排除需要傳輸;通常配合 –exclude 或 –exclude-from 使用 |
–bwlimit=RATE | 限速 限制I / O頻寬;K位元組每秒 |
–delete | 讓目標DEST目錄與SRC目錄資料一致 【慎用】 |
部分引數示例說明
1 # --exclude=PATTERN 示例 2 [yun@backup tmp]$ rsync -avz --exclude=systemd.conf /etc/yum /tmp/zhang01 3 # 或者 4 [yun@backup tmp]$ rsync -avz --exclude=systemd.* /etc/yum /tmp/zhang01 5 # 或者 多個條件使用多個 --exclude=PATTERN 6 [yun@backup tmp]$ rsync -avz --exclude=systemd.conf --exclude=fastestmirror.conf /etc/yum /tmp/zhang05
1 # --exclude-from=FILE 示例 2 [yun@backup tmp]$ cat exclude.info 3 fastestmirror.conf 4 systemd.conf 5 vars 6 7 # 那麼此時 fastestmirror.conf、systemd.conf 檔案 和 vars 目錄不會被拷貝 8 [yun@backup tmp]$ rsync -avz --exclude-from=exclude.info /etc/yum /tmp/zhang01
1 # --include=PATTERN 示例 2 ## 注意引數順序:--include 或 --include-from 必須要在 --exclude 或 --exclude-from 之前 3 [yun@backup tmp]$ rsync -avz --include=systemd* --exclude=*.conf /etc/yum /tmp/zhang02
Rsync 本地模式實踐
Local: rsync [OPTION...] SRC... [DEST]
示例如下:
rsync -avz /etc/yum /tmp/zhang01
Rsync 使用遠端 SSH 通道實踐
1 Access via remote shell: 2 Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST] 3 Push: rsync [OPTION...] SRC... [USER@]HOST:DEST
拉取資料:將遠端機器的資料複製到本地
[yun@backup ~]$ rsync -avzP -e 'ssh -p 22' [email protected]:/etc/yum /tmp/zhang01
推送資料:將本地的資料複製到遠端機器
[yun@backup ~]$ rsync -avzP -e 'ssh -p 22' /etc/yum [email protected]:/tmp/zhang
Rsync daemon 服務模式實踐
1 Access via rsync daemon: 2 Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] 3 rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] 4 Push: rsync [OPTION...] SRC... [USER@]HOST::DEST 5 rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST使用規劃
1、backup 伺服器作為 rsync 服務端
2、以 ansi-haproxy02 作為客戶端,進行資料推拉。
rsync 服務端配置
系統環境資訊
1 [yun@backup ~]$ cat /etc/redhat-release 2 CentOS Linux release 7.5.1804 (Core) 3 [yun@backup ~]$ uname -a 4 Linux backup 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux 5 [root@backup ~]# rpm -qa | grep 'rsync' 6 rsync-3.1.2-4.el7.x86_64 7 [yun@backup ~]$ rsync --version # 系統已預設安裝,如果沒有那自行安裝下 8 rsync version 3.1.2 protocol version 31 9 Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others. 10 Web site: http://rsync.samba.org/ 11 Capabilities: 12 64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints, 13 socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace, 14 append, ACLs, xattrs, iconv, symtimes, prealloc 15 16 rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you 17 are welcome to redistribute it under certain conditions. See the GNU 18 General Public Licence for details.
服務配置檔案
注意:配置後面不要新增任何資訊和空格,不然可能被解析,導致後續一系列問題。
1 [root@backup ~]# cat /etc/rsyncd.conf 2 # 備註:更多引數與更多詳解,參見 man rsyncd.conf 3 #rsync_config---------------start 4 uid = root 5 gid = root 6 use chroot = false 7 max connections = 200 8 timeout = 100 9 pid file = /var/run/rsyncd.pid 10 lock file = /var/run/rsync.lock 11 log file = /var/log/rsyncd.log 12 dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 13 ignore errors = true 14 read only = false 15 list = false 16 17 ## 注意為了避免困惑 hosts allow 和 hosts deny 請二選其一 18 hosts allow = 172.16.1.0/24,10.9.0.0/16,120.27.48.179 19 # hosts deny = 10.0.0.0/16 20 # 支援多個認證賬號 21 auth users = rsync_backup,rsync_db_back 22 secrets file = /etc/rsync.password 23 24 25 # 資料備份 注意 path 目錄的許可權資訊 26 [back_data_module] 27 path = /backup/busi_data/ 28 29 # 資料庫備份 注意 path 目錄的許可權資訊 30 [back_db_module] 31 path = /backup/database/ 32 33 #rsync_config---------------end
配置檔案詳解
更多引數與詳解,參見 man rsyncd.conf
1 # 備註:更多引數與更多詳解,參見 man rsyncd.conf 2 # rsync_config---------------start 3 # 可以是其他使用者 4 # 超級使用者執行時的預設設定是切換到系統的“nobody”使用者 5 # 如果配置為 root 使用者,這時可以同步屬主資訊 6 # 非超級使用者是不能同步屬主資訊的 7 uid = root # 其他主機通過 rsync 實現推拉時使用什麼使用者 8 # 可以是其他使用者組 9 # 超級使用者組執行時的預設設定是切換到系統的“nobody”使用者組 10 # 如果配置為 root 使用者組,這時可以同步屬組資訊 11 # 非超級使用者組是不能同步屬組資訊的 12 gid = root # 其他主機通過 rsync 實現推拉時使用什麼使用者組 13 # 如果為 true,安全性更高,但軟連線檔案「可能」同步不了 14 # 這是 rsync 的一個安全配置,由於我們大多數都是內網使用,所以可以不配置。建議 false 15 use chroot = false 16 max connections = 200 # 最大連線數 17 timeout = 100 # 超時時間 18 pid file = /var/run/rsyncd.pid # 程序號檔案 19 lock file = /var/run/rsync.lock # 鎖檔案,防止檔案不一致 20 log file = /var/log/rsyncd.log # 日誌檔案 21 dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 # 對哪些檔案傳輸時不壓縮【如果傳輸時我們指定了壓縮引數】 22 ignore errors = true # 忽略錯誤 23 read only = false # 在服務端可讀寫 24 list = false # 不讓列表,安全考慮 25 26 ## 注意為了避免困惑 hosts allow 和 hosts deny 請二選其一 27 hosts allow = 172.16.1.0/24,10.9.0.0/16,120.27.48.179 # 可訪問的網段或IP,多個使用逗號分隔;其他的都不可訪問 28 # hosts deny = 10.0.0.0/16 # 不可訪問的網段或IP,多個使用逗號分隔;其他的都可以訪問 29 # 支援多個認證賬號 30 auth users = rsync_backup,rsync_db_back # 其他主機連線時,校驗的使用者【虛擬使用者】 31 secrets file = /etc/rsync.password # 虛擬使用者賬號及密碼 32 33 34 # 資料備份 注意 path 目錄的許可權資訊 35 [back_data_module] 36 path = /backup/busi_data/ 37 38 # 資料庫備份 注意 path 目錄的許可權資訊 39 [back_db_module] 40 path = /backup/database/ 41 42 # rsync_config---------------end
uid、gid 詳解
當 rsync 服務端的 uid、gid 用的是 rsync 使用者和使用者組【或其他非超級使用者、使用者組】時,客戶端同步時只能同步資料資訊、許可權資訊、時間戳資訊,但不能同步屬主、屬組資訊。此時客戶端若要同步的資料屬主、屬組,那麼客戶端資料的屬主、屬組必須也是 rsync【即客戶端與服務端的 uid、gid 相同】;或者不要同步屬主、屬組資訊。
如果需要把多個檔案且屬主、屬組不同的屬性資訊也同步到 rsync 服務端,那麼在 rsync 服務端的 uid、gid 配置都應該是 root。
use chroot 詳解
use chroot = true
需要 root 許可權,且 rsync 在傳輸檔案之前首先 chroot 到 path 引數所指定的目錄下,然後再開始與客戶端進行檔案傳輸。
優點:可以提供額外的保護,防止可能的出現的安全漏洞
缺點:如果同步的資料有軟連線,那麼軟連線「可能」同步不了
use chroot = false
出於安全原因,預設情況下使用 munge 符號連結,即所有的軟連線前面多會加 /rsyncd-munged/,如下:
其他必要設定與配置
1、建立對應的目錄
1 [root@backup ~]# mkdir -p /backup/{busi_data,database} 2 [root@backup ~]# ll /backup/ 3 total 0 4 drwxr-xr-x 2 root root 6 Sep 20 14:54 busi_data 5 drwxr-xr-x 2 root root 6 Sep 20 14:54 database
2、rsync虛擬使用者配置
1 [root@backup ~]# ll /etc/rsync.password # 注意檔案的許可權資訊 600 2 -rw------- 1 root root 63 Sep 20 15:03 /etc/rsync.password 3 [root@backup ~]# 4 [root@backup ~]# cat /etc/rsync.password 5 rsync_backup:rsync_backup_pwd 6 rsync_db_back:rsync_db_back_pwd
啟動/停止 Rsync 守護程序服務
1 [root@backup ~]# systemctl start rsyncd.service 2 [root@backup ~]# netstat -lntup | grep 'rsync' 3 tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 2366/rsync 4 tcp6 0 0 :::873 :::* LISTEN 2366/rsync 5 [root@backup ~]# lsof -i :873 6 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME 7 rsync 2347 root 3u IPv4 31366 0t0 TCP *:rsync (LISTEN) 8 rsync 2347 root 5u IPv6 31367 0t0 TCP *:rsync (LISTEN) 9 [root@backup ~]# ps -ef | grep 'rsync' 10 root 2366 1 0 10:59 ? 00:00:00 /usr/bin/rsync --daemon --no-detach 11 root 2571 1684 0 11:08 pts/0 00:00:00 grep --color=auto rsync
停止 rsync 服務
[root@backup ~]# systemctl stop rsyncd.service
加入開機自啟動
1 [root@backup ~]# systemctl enable rsyncd.service # 加入開機自啟動 2 Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service. 3 [root@backup ~]# systemctl status rsyncd.service 4 ● rsyncd.service - fast remote file copy program daemon 5 Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; enabled; vendor preset: disabled) 6 Active: inactive (dead)
Rsync 客戶端配置
系統環境資訊
1 [root@ansi-haproxy02 ~]# cat /etc/redhat-release 2 CentOS Linux release 7.5.1804 (Core) 3 [root@ansi-haproxy02 ~]# uname -a 4 Linux ansi-haproxy02 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux 5 [root@ansi-haproxy02 ~]# rpm -qa | grep 'rsync' 6 rsync-3.1.2-4.el7.x86_64 7 [root@ansi-haproxy02 ~]# rsync --version 8 rsync version 3.1.2 protocol version 31 9 Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others. 10 Web site: http://rsync.samba.org/ 11 Capabilities: 12 64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints, 13 socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace, 14 append, ACLs, xattrs, iconv, symtimes, prealloc 15 16 rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you 17 are welcome to redistribute it under certain conditions. See the GNU 18 General Public Licence for details.
密碼檔案
注意密碼檔案只能填寫對應密碼資訊,不要有其他多餘的字元,rsync 在讀取時僅讀取該檔案的第一行資訊。
1 [root@ansi-haproxy02 ~]# ll /etc/rsync.password* # 注意許可權資訊 600 或 400 2 -rw------- 1 root root 36 Sep 20 16:28 /etc/rsync.password 3 -rw------- 1 root root 19 Sep 24 11:30 /etc/rsync.password2 4 [root@ansi-haproxy02 ~]# cat /etc/rsync.password 5 rsync_backup_pwd 6 [root@ansi-haproxy02 ~]# cat /etc/rsync.password2 7 rsync_db_back_pwd
注意:客戶端一個 password 檔案不能存放多個密碼,rsync 在讀取檔案的時候只會讀取第一個密碼。
客戶端準備資料
1 [root@ansi-haproxy02 zhang]# pwd 2 /tmp/zhang 3 [root@ansi-haproxy02 zhang]# cp -a /etc/yum ./ 4 [root@ansi-haproxy02 zhang]# ll 5 total 0 6 drwxr-xr-x. 6 root root 100 Nov 14 2018 yum 7 [root@ansi-haproxy02 zhang]# touch stu{01..100} 8 [root@ansi-haproxy02 zhang]# ls 9 stu001 stu008 stu015 stu022 stu029 stu036 stu043 stu050 stu057 stu064 stu071 stu078 stu085 stu092 stu099 10 stu002 stu009 stu016 stu023 stu030 stu037 stu044 stu051 stu058 stu065 stu072 stu079 stu086 stu093 stu100 11 stu003 stu010 stu017 stu024 stu031 stu038 stu045 stu052 stu059 stu066 stu073 stu080 stu087 stu094 yum 12 stu004 stu011 stu018 stu025 stu032 stu039 stu046 stu053 stu060 stu067 stu074 stu081 stu088 stu095 13 stu005 stu012 stu019 stu026 stu033 stu040 stu047 stu054 stu061 stu068 stu075 stu082 stu089 stu096 14 stu006 stu013 stu020 stu027 stu034 stu041 stu048 stu055 stu062 stu069 stu076 stu083 stu090 stu097 15 stu007 stu014 stu021 stu028 stu035 stu042 stu049 stu056 stu063 stu070 stu077 stu084 stu091 stu098
推拉資料
客戶端向服務端推送資料
使用 rsync_backup 賬號測試
情況1、需要校驗使用者密碼
1 [root@ansi-haproxy02 zhang]# rsync -avz /tmp/zhang [email protected]::back_data_module 2 Password: 3 sending incremental file list 4 ……………… 5 sent 6,202 bytes received 2,070 bytes 1,504.00 bytes/sec 6 total size is 1,117 speedup is 0.14
情況2、不要密碼【密碼檔案】
1 # 方式一 2 # 從本地推送到服務端 back_data_module 模組路徑下 3 [root@ansi-haproxy02 zhang]# rsync -avz --password-file=/etc/rsync.password /etc/yum [email protected]::back_data_module 4 # 方式二 5 # 從本地推送到服務端 back_data_module 模組路徑下的 zhang 目錄下 6 [root@ansi-haproxy02 zhang]# rsync -avz --password-file=/etc/rsync.password /etc/systemd rsync://[email protected]/back_data_module/zhang/
其中:back_data_module 為 rsync 配置中的模組名
客戶端向服務端拉取資料
使用 rsync_db_back 賬號測試
情況1:需要校驗使用者密碼
1 [root@ansi-haproxy02 test]# rsync -avz [email protected]::back_data_module/zhang /tmp/test/ 2 Password: 3 receiving incremental file list 4 …………
情況2、不要密碼【密碼檔案】
1 # 方式一 2 # 從服務端 back_data_module 模組路徑下的yum目錄,拉取到本地 /tmp/test1/ 目錄下 3 [root@ansi-haproxy02 kkkk]# rsync -avz --password-file=/etc/rsync.password2 [email protected]::back_data_module/yum /tmp/test1/ 4 # 方式二 5 # 從服務端 back_data_module 模組路徑下的yum目錄,拉取到本地 /tmp/test2/ 目錄下 6 [root@ansi-haproxy02 tmp]# rsync -avz --password-file=/etc/rsync.password2 rsync://[email protected]/back_data_module/yum /tmp/test2/
其中:back_data_module 為 rsync 配置中的模組名
注意點:
客戶端路徑末尾是否有 /
“/” 有:則表示推送該目錄下的所有檔案
“/” 無:則表示推送該目錄,與該目錄下所有檔案
目標一端可以加一個不存在的目錄
類似 cp 命令一樣,我們可以在目標一端指定一個目錄
推送時,目標一端有該目錄則直接使用;沒有則建立
Rsync 常見問題
故障點1:客戶端密碼檔案屬主不對
客戶端以哪個使用者執行命令,那麼 password-file 檔案的屬主就是哪個使用者。
當然為了安全起見,客戶端的 password-file 檔案屬主最好是 root ,這時我們執行命令也用 root 使用者。
1 [root@ansi-haproxy02 ~]# rsync -avz --password-file=/etc/rsync.password2 /etc/yum [email protected]::back_db_module 2 ERROR: password file must be owned by root when running as root 3 rsync error: syntax or usage error (code 1) at authenticate.c(200) [sender=3.1.2]
故障點2:客戶端密碼檔案許可權不對
客戶端的 password-file 檔案許可權是 600 或 400。
1 [root@ansi-haproxy02 ~]# rsync -avz --password-file=/etc/rsync.password2 /etc/yum [email protected]::back_db_module 2 ERROR: password file must not be other-accessible 3 rsync error: syntax or usage error (code 1) at authenticate.c(196) [sender=3.1.2]
故障點3:客戶端使用者執行許可權不足
客戶端使用者執行許可權不足,不能讀取 password-file 檔案資訊。
當前使用 yun 使用者,實際需要 root 使用者。
1 [yun@ansi-haproxy02 ~]$ rsync -avz --password-file=/etc/rsync.password2 /etc/yum [email protected]::back_db_module 2 rsync: could not open password file /etc/rsync.password2: Permission denied (13) 3 rsync error: syntax or usage error (code 1) at authenticate.c(187) [sender=3.1.2]
故障點4:服務端沒有對應的模組目錄
服務端 back_db_module 模組的 path 路徑不存在。
1 [root@ansi-haproxy02 ~]# rsync -avz --password-file=/etc/rsync.password2 /etc/yum [email protected]::back_db_module 2 @ERROR: chdir failed 3 rsync error: error starting client-server protocol (code 5) at main.c(1648) [sender=3.1.2]
故障點5:客戶端密碼不正確
客戶端 password-file 檔案的密碼資訊與服務端的密碼不匹配,不能通過驗證。
1 [root@ansi-haproxy02 ~]# rsync -avz --password-file=/etc/rsync.password2 /etc/yum [email protected]::back_db_module 2 @ERROR: auth failed on module back_db_module 3 rsync error: error starting client-server protocol (code 5) at main.c(1648) [sender=3.1.2]
故障點6:服務端目錄不存在
服務端只能建立一級不存在的目錄,不能建立二級及以上不存在的目錄。
1 [root@ansi-haproxy02 ~]# rsync -avz --password-file=/etc/rsync.password2 /etc/yum [email protected]::back_db_module/aaa/bbb 2 sending incremental file list 3 rsync: mkdir "aaa/bbb" (in back_db_module) failed: No such file or directory (2) 4 rsync error: error in file IO (code 11) at main.c(657) [Receiver=3.1.2]
如果覺得不錯就點個讚唄 (-^O^-) !
——————————END——————————
&n