1 什么是Rsync?
Rsync是一款開源的,快速的,多功能的,可實現全量及增量的本地或遠程數據同步備份的優秀工具。Rsync軟件適用於unix/linux/windows等多種操作系統平台。
2 Rsync的特性如下:
- 支持拷貝特殊文件如鏈接文件,設備等
- 可以有排除(tar?find?)指定文件或目錄同步的功能,相當於打包命令tar的排除功能
- 可以做到保持原文件或目錄的權限,時間,軟硬鏈接,屬主,組等屬性均不改變-p
- 可以實現增量同步,既只同步發生變化的數據,因此數據傳輸效率很高(tar-N)
- 可以使用rcp,rsh,ssh等方式來配合傳輸文件(rsync本身不對數據加密)
- 可以通過socket(進程方式)傳輸文件和數據(服務端和客戶端)
- 支持匿名的或認證(無需系統用戶)的進程模式傳輸,可實現方便安全的進行數據備份及鏡像
-
3 Rsync一共幾種模式?
- 單個主機本地之間的數據傳輸(此時類似於cp命令的功能)
- 借助rcp,ssh等通道來傳輸數據(此時類似於scp命令的功能)
- 以守護進程(socket)的方式傳輸數據(這個是rsync自身的重要功能)
- 4 rsync 命令常用參數選項說明:
- -v,--verbose 詳細模式輸出,傳輸時的進度等信息
- -z,--compress 傳輸時進行壓縮以提高傳輸效率,--compress-level=NUM可按級別壓縮。
-
-a,--archive 歸檔模式,表示以遞歸方式傳輸文件,並保持所有文件屬性,等於-rtopgD1(字母1)
-r,--recursive
對子目錄以遞歸模式,即目錄下的所有目錄都同樣傳輸,注意是小寫r
-t,--times
保持文件時間信息
-o,--owner
保持文件屬主信息
-p,--perms
保持文件權限
-g,--group
保持文件屬組信息
-P,--progress
顯示同步的過程及傳輸時的進度等信息
-D,--devices
保持設備文件信息
-l,--links
保留軟鏈接
-e,--rsh=COMMAND
使用的信道協議(remote shell),指定替代rsh的shell程序。例如:ssh --exclude=PATTERN 指定排除不需要傳輸的文件模式(和tar參數一樣)
--bwlimit=RATE
limit socket I/O bandwidth
二, 開始部署rsync服務--Rsync服務器端A-Server操作過程:
1. 配置rsyncd.conf
首先確認軟件是否安裝:(which rsync)
-
沒有就安裝 : rpm -qa rsync
-
然后創建rsyncd.conf文件,並添加如下內容(文件默認不存在)
- uid = rsync# (用戶)
-
. gid = rsync# (組)
. use chroot = no# 程序安全設置
. max connections = 200. # 客戶端連接數
. timeout = 300 # 超時時間
. pid file = /var/run/rsyncd.pid# 進程號文件位置
. lock file = /var/run/rsync.lock# 進程鎖
. log file = /var/log/rsyncd.log# 日志文件位置
. [backup]
path = /backup/ # 使用目錄
. ignore errors # 有錯誤時忽略
-
. read only = false#可讀可寫(true或false)
. list=false# 阻止遠程列表(不讓通過遠程方式看服務端有啥)
. hosts allow = 192.168.232.0/24#允許IP
. hosts deny = 0.0.0.0/32 #禁止IP
-
. auth users = rsync_backup # 虛擬用戶
secrets file = /etc/rsync.password#存放用戶和密碼的文件
-
rsyncd.conf參數
參數說明
uid=rsync
rsync使用的用戶。
gid=rsync
rsync使用的用戶組(用戶所在的組)
use chroot=no
如果為true,daemon會在客戶端傳輸文件前“chroot to the path”。這是一種安全配置,因為我們大多數都在內網,所以不配也沒關系
max connections=200
設置最大連接數,默認0,意思無限制,負值為關閉這個模塊
timeout=400
默認為0,表示no timeout,建議300-600(5-10分鍾)
pid file
rsync daemon啟動后將其進程pid寫入此文件。如果這個文件存在,rsync不會覆蓋該文件,而是會終止
lock file
指定lock文件用來支持“max connections”參數,使得總連接數不會超過限制
log file
不設或者設置錯誤,rsync會使用rsyslog輸出相關日志信息
ignore errors
忽略I/O錯誤
read only=false
指定客戶端是否可以上傳文件,默認對所有模塊為true
list=false
是否允許客戶端可以查看可用模塊列表,默認為可以
hosts allow
指定可以聯系的客戶端主機名或和ip地址或地址段,默認情況沒有此參數,即都可以連接
hosts deny
指定不可以聯系的客戶端主機名或ip地址或地址段,默認情況沒有此參數,即都可以連接
auth users
指定以空格或逗號分隔的用戶可以使用哪些模塊,用戶不需要在本地系統中存在。默認為所有用戶無密碼訪問
secrets file
指定用戶名和密碼存放的文件,格式;用戶名;密碼,密碼不超過8位
[backup]
這里就是模塊名稱,需用中括號擴起來,起名稱沒有特殊要求,但最好是有意義的名稱,便於以后維護
path
這個模塊中,daemon使用的文件系統或目錄,目錄的權限要注意和配置文件中的權限一致,否則會遇到讀寫的問題
-
1. 案例:某DBA做數據同步,帶寬占滿,導致用戶無法訪問網站。
rsync -avz dbfile 10.0.0.41:/backup #沒有給帶寬做限制
rsync -avz --bwlimit=100 dbfile 172.16.1.41:/backup #限定了帶寬
-
1. 創建共享目錄及添加rsync程序用戶
-
useradd -M -s /sbin/nologin rsync #創建rsync用戶
2 啟動服務:
-
rsync --daemon
3 將A-Server上的/backup文件夾更改屬主rsync
- chown -R rsync /backup
-
4 創建rsync虛擬賬戶名和密碼
- echo "rsync_backup:123456" >/etc/rsync.password
-
5 將賬戶密碼文件的權限設置為600(必須否則失敗)
- chmod 600 /etc/rsync.password
- 6 加入開機啟動
- echo "rsync --daemon" >> /etc/rc.local
-
開始部署rsync服務--Rsync客戶端B-Server
-
1 只需要創建密碼文件 echo "123456" > /etc/rsync.password
-
2 將密碼文件的權限設置為600(必須否則失敗) chmod 600 /etc/rsync.password
-
Rsync 優缺點
1. rsync優點:
1,增量備份,支持socket(daemon),集中備份(支持推拉,都是以客戶端為參照物)。
2,遠程SHELL通道模式還可以加密(SSH)傳輸,socket(daemon)需要加密傳輸,可以利用vpn服務或ipsec服務2.rsync缺點:
1,大量小文件時候同步的時候,比對時間較長,有的時候,同步過程中,rsync進程可能會停止,僵死了。
2,同步大文件,10G這樣的大文件有時也會出問題,中斷。未完整同步前,是隱藏文件,可以通過續傳(--partial)等參數實現傳輸
3,一次性遠程拷貝可以用scp,大量小文件要打成一個包再拷貝。(重要) -