#首先,關閉防火牆和selinux
[root@ c7-41 ~] systemctl stop firewalld
[root@ c7-41 ~] setenforce 0
1,在主機A 服務端上查看是否安裝rsync服務
[root@ c7-41 ~] rpm -qa rsync #centos7.7 自帶rsync服務
rsync-3.1.2-6.el7_6.1.x86_64
[root@ c7-41 ~] yum -y install rsync #沒有則yum安裝即可
2,修改服務端配置文件
[root@ c7-41 ~] vim /etc/rsyncd.conf
[root@ c7-41 ~] cat /etc/rsyncd.conf #注意:配置文件中,行後不要有註釋和空格。
##全局配置
uid = root #用戶
gid = root #用戶組
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 = /data #模塊對應的位置(路徑)
ignore errors #忽略錯誤程序
read only = false #是否只讀
list = false #是否可以列表
hosts allow = 10.0.0.0/24 #准許訪問rsync服務器的客戶範圍
#hosts deny = 0.0.0.0/32 #禁止訪問rsync服務器的客戶範圍
auth users = rsync_backup #不存在的用戶;只用於認證
secrets file = /etc/rsync.password #設置進行連接認證的密匙文件
3、創建rsync備份目錄/授權rsync用戶管理備份目錄,修改備份目錄權限
[root@ c7-41 ~] mkdir -p /data
[root@ c7-41 ~] useradd rsync -s /sbin/nologin -M #創建一個rsync的虛擬用戶,只被程序使用
[root@ c7-41 ~] chown -R rsync.rsync /data/
4、創建認證用戶密碼文件,修改文件權限
[root@ c7-41 ~] echo "rsync_backup:123456" >/etc/rsync.password
[root@ c7-41 ~] chmod 600 /etc/rsync.password
5、重啓rsync守護進程服務,並查看是否啓動
[root@ c7-41 ~] systemctl enable rsyncd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/rsyncd.service to /usr/lib/systemd/system/rsyncd.service.
[root@ c7-41 ~] systemctl restart rsyncd.service
[root@ c7-41 ~] ps -ef|grep rsync
root 3109 1 0 14:35 ? 00:00:00 /usr/bin/rsync --daemon --no-detach
root 3117 2851 0 14:37 pts/0 00:00:00 grep --color=auto rsync
#啓動文件
[root@ c7-41 ~] cat /usr/lib/systemd/system/rsyncd.service
[Unit]
Description=fast remote file copy program daemon
nditionPathExists=/etc/rsyncd.conf
[Service]
EnvironmentFile=/etc/sysconfig/rsyncd
ExecStart=/usr/bin/rsync --daemon --no-detach "$OPTIONS"
[Install]
WantedBy=multi-user.target
6,在主機B 客戶端上部署
創建密碼文件,客戶端密碼文件中,只需要密碼即可,密碼文件的權限是600
[root@ c7-42 ~] echo "123456">/etc/rsync.password
[root@ c7-42 ~] chmod 600 /etc/rsync.password
7,在客戶端測試推送文件
#在主機B 客戶端上創建文件aaa.txt
[root@ c7-42 ~] echo "what are you doing?" >>aaa.txt
[root@ c7-42 ~] rsync -avz aaa.txt [email protected]::backup --password-file=/etc/rsync.password
sending incremental file list
aaa.txt
sent 103 bytes received 43 bytes 292.00 bytes/sec
total size is 12 speedup is 0.08
在主機A服務端上查看是否推送成功
[root@ c7-41 ~] ls /data/
aaa.txt
8,客戶端在服務端拉取文件
#注意:rsync默認使用873端口,防火牆開啓時,需放行端口
[root@ c7-42 ~] rsync -avz [email protected]::backup --password-file=/etc/rsync.password /tmp
receiving incremental file list
./
aaa.txt
sent 50 bytes received 150 bytes 133.33 bytes/sec
total size is 12 speedup is 0.06
在客戶端查看
[root@ c7-42 ~] ls /tmp/
aaa.txt #拉取的文件
ks-script-__iz55
vmware-root_912-2697663791
vmware-root_926-2731217702
vmware-root_940-2689209484
vmware-root_972-2957124820
vmware-root_984-2999526209
yum.log
rsync介紹
rsync英文稱爲remote synchronizetion,從軟件的名稱就可以看出來,rsync具有可使本地和遠程兩臺主機之間的數據快速複製同步鏡像、遠程備份的功能,這個功能類似於ssh帶的scp命令,但是又優於scp命令的功能,scp每次都是全量拷貝,而rsync可以增量拷貝。
當然,rsync還可以在本地主機的不同分區或目錄之間全量及增量的複製數據,這又類似cp命令。但是同樣也優於cp命令,cp每次都是全量拷貝,而rsync可以增量拷貝。
在同步數據的時候,默認情況下,rsync通過其獨特的“quick check”算法,它僅同步大小或者最後修改時間發生變化的文件或目錄,當然也可根據權限、屬主等屬性的變化同步,但是需要制定相應的參數,甚至可以實現只同步一個文件裏有變化的內容部分,所以,可是實現快速的同步備份數據。
rsync - 快速,通用,可實現全量和增量的遠程(和本地)文件複製工具。
rsync監聽端口:873
rsync運行模式:C/S
client/server :客戶端/服務端
rsync優缺點
優點:
1)可以增量備份,支持socket(daemon),集中備份(支持推拉,都是以客戶端爲參照物);socket(daemon)需要加密傳輸,可以利用vpn服務或ipsec服務。
2)可以限速進行數據的備份或恢復操作。
3)遠程SHELL通道模式還可以加密(SSH)傳輸
4)支持匿名認證(無需系統用戶)的進程模式傳輸,可以實現方便安全的進行數據備份和鏡像
5)保持原文件或目錄的權限、時間、軟硬鏈接、屬主、組等所有屬性均不改變 –p
6)可以有排除指定文件或目錄同步的功能,相當於打包命令tar的排除功能。(–exclude)
缺點:
1)大量小文件時進行同步備份,比對的時間較長,有時候會導致rsync進程停止運行或者進程掛起; 解決方法: a、打包後再同步; b、drbd(文件系統同步複製block)。
2)同步大文件,比如:10G這樣的,有時也會出現問題,導致rsync進程中斷,未完整同步前,是隱藏文件,但是會佔用磁盤空間(ls -al查看)。直到同步完成後,將隱藏文件改成正常文件。而且,每中斷一次,生成一個隱藏文件。
rsync三種工作模式
分別是:本地方式,遠程方式,守護進程。
參數詳解
rsync參數 說明
-v, --verbose 詳細模式輸出
-a, --archive 歸檔模式,表示以遞歸方式傳輸文件,並保持所有文件屬性,等於-rlptgoD
-z, --compress 對備份的文件在傳輸時進行壓縮處理
-P 顯示進度
-r, --recursive 對子目錄以遞歸模式處理
-l, --links 保留軟鏈結
-p, --perms 保持文件權限
-o, --owner 保持文件屬主信息
-g, --group 保持文件屬組信息
-D, --devices 保持設備文件信息
-t, --times 保持文件時間信息
-e, --rsh=command 指定使用rsh、ssh方式進行數據同步
-S, --sparse 對稀疏文件進行特殊處理以節省DST的空間
-n, --dry-run 現實哪些文件將被傳輸
-w, --whole-file 拷貝文件,不進行增量檢測
-B, --block-size=SIZE 檢驗算法使用的塊尺寸,默認是700字節。
-x, --one-file-system 不要跨越文件系統邊界
-R, - -relative 使用相對路徑信息
-b, --backup 創建備份,也就是對於目的已經存在有同樣的文件名時,將老的文件重新命名爲~filename。可以使用--suffix選項來指定不同的備份文件前綴。
-u, --update 僅僅進行更新,也就是跳過所有已經存在於DST,並且文件時間晚於要備份的文件,不覆蓋更新的文件
-q, --quiet 精簡輸出模式
-c, --checksum 打開校驗開關,強制對文件傳輸進行校驗
--exclude=PATTERN 指定排除不需要傳輸的文件模式
--exclude-from=FILE 排除FILE中指定模式的文件
--bwlimit=KBPS 限制I/O帶寬,KBytes per second
--delete 刪除那些DST中SRC沒有的文件
--password-file=FILE 從FILE中得到密碼