Rsync 服務部署與參數詳解

来源:https://www.cnblogs.com/zhanglianghhh/archive/2019/09/26/11590244.html
-Advertisement-
Play Games

Rsync 簡介 rsync 是一款開源的、快速的、多功能的、可實現全量及增量的本地或遠程數據同步備份的優秀工具。Rsync軟體適用於unix/linux/windows等多種操作系統平臺。 傳統的 scp 和 cp 工具拷貝每次均為完整拷貝,而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 yun@172.16.1.182:/etc/xml /tmp/ 
2 # 等價於
3 [yun@back tmp]$ rsync -pr yun@172.16.1.182:/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' yun@172.16.1.182:/etc/yum /tmp/zhang01

 

推送數據:將本地的數據複製到遠程機器

[yun@backup ~]$ rsync -avzP -e 'ssh -p 22' /etc/yum yun@172.16.1.182:/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*    # 註意許可權信息 600400
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 rsync_backup@172.16.1.181::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 rsync_backup@172.16.1.181::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 rsync_db_back@172.16.1.181::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 rsync_db_back@172.16.1.181::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 rsync_db_back@172.16.1.181::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 rsync_db_back@172.16.1.181::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 rsync_db_back@172.16.1.181::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 rsync_db_back@172.16.1.181::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 rsync_db_back@172.16.1.181::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 rsync_db_back@172.16.1.181::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——————————

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近遇到一個問題,由於兩台伺服器時間的問題,經常導致用戶登錄由於時間差問題而報錯,再三百度,最後整理了一下修改linux定時同步的操作(本方法適用於有自己時間伺服器,沒有的只限於借鑒) 首先確認,我們的服務是否已經安裝了ntp服務 如果沒有安裝,需要先安裝ntp服務 安裝完ntp之後,編輯ntp.c ...
  • console.log("運行自定義腳本"); 安裝工具 我的機器環境是: ,開始之前,得在機器上面安裝一些工具: [x] gcc [x] binutils (readelf,objdump) 因為我在自己的機器上面安裝了 brew 這個包管理工具,以及 這個 Shell ,所以我就通過 就安裝好了 ...
  • 最小化centos 安裝基礎命令: 常用的基礎命令如下 yum install vim iotop bc gcc gcc-c++ glibc glibc-devel pcre \ pcre-devel openssl openssl-devel zip unzip zlib-devel net-to ...
  • MYSQL(mariadb) 方法1:yum安裝mariadb Red Hat Enterprise Linux/CentOS 7.0 發行版已將預設的資料庫從 MySQL 切換到 MariaDB 第一步:添加 MariaDB yum 倉庫 第二步:在 CentOS 7 中安裝 MariaDB 第三 ...
  • 最近一直在搞電源管理相關內容,之前是8610的bms,現在8916的bms,發現兩者還是有點區別的,8916把對last_ocv_uv的估值演算法分裝成執行文件,作為服務一直運行。 電源管理方面,應該是Android驅動開發的一大難點,主要涉及的方面多,如充、放電、休眠喚醒等。這一部分主要講BMS相關 ...
  • 在msdn資源站上看到兩個下載不同的區別,二者都內置專業版,不同之處在於: 具體在哪裡下?百度搜索msdn我告訴你。我還是喜歡使用完全無預裝版本,也就是LTSC版本。 網路上很多LTSB版本很好,LTSC與LTSB都是基於企業版 名詞解釋: LTSB = Long Term Servicing Br ...
  • 自己製作一個簡單的操作系統一[環境搭建] 環境搭建好了? 直接上手 自己製作一個簡單的操作系統二[CherryOS] 一. 軟硬體需求 1. 硬體 一臺電腦, 我使用的是win10(本來想用linux可是沒找到linux版的扇區讀寫工具) 2. 軟體 彙編編譯器:NASM 點擊下載 軟盤絕對扇區讀寫 ...
  • CV:Constant Voltage恆壓 SMMB charger:Switch ModeBattery Charger and Boost peripheral開關模式電池充電器和升壓外圍設備 OCV:Open circuitvoltage EOC:End OfCharge充電結束 UUC:Un ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...