rsync簡介
- 1.1 rsync功能
可以實現(xiàn)增量備份,能實現(xiàn)定時或間隔同步,配合inotify或sersync,可以實現(xiàn)觸發(fā)式的實時同步。類似于scp cp rm等工具。
- 1.2 rsync的特點
支持拷貝特殊文件如軟連接,設(shè)備等
可以有排除(tar?find?)指定文件或目錄同步的功能,相當(dāng)于打包命令tar的排除功能。
可以做到保持源文件或目錄的權(quán)限、時間、軟硬連接、屬主、組等所有屬性均不改變-p。
可以實現(xiàn)增量同步,既只同步發(fā)生變化的數(shù)據(jù),因此數(shù)據(jù)傳輸效率很高
可以使用rcp,rsh,ssh等方式來配合傳輸文件(rsync本身不對數(shù)據(jù)加密)
可以通過socker(守護進程方式)傳輸文件和數(shù)據(jù)(服務(wù)端和客戶端)
支持匿名的或認證(無需系統(tǒng)用戶)的進程模式傳輸,可實現(xiàn)方便安全的進行數(shù)據(jù)備份及鏡像 。
Rsync也相當(dāng)于ls命令
-
1.3 rsync的三種工作模式說明
···
image.png
1).本地文件系統(tǒng)上實現(xiàn)同步。命令行語法格式為上述"Local"段的格式。
(2).本地主機使用遠程shell和遠程主機通信。命令行語法格式為上述"Access via remote shell"段的格式。
(3).本地主機通過網(wǎng)絡(luò)套接字連接遠程主機上的rsync daemon。命令行語法格式為上述"Access via rsync daemon"段的格式。前兩者的本質(zhì)是通過管道通信,即使是遠程shell。而方式(3)則是讓遠程主機上運行rsync服務(wù),使其監(jiān)聽在一個端口上,等待客戶端的連接。
但是,通過遠程shell也能臨時啟動一個rsync daemon,這不同于方式(3),它不要求遠程主機上事先啟動rsync服務(wù),而是臨時派生出rsync daemon,它是單用途的一次性daemon,僅用于臨時讀取daemon的配置文件,當(dāng)此次rsync同步完成,遠程shell啟動的rsync daemon進程也會自動消逝。此通信方式的命令行語法格式同"Access via rsync daemon",但要求options部分必須明確指定"--rsh"選項或其短選項"-e"。
2 準備配置環(huán)境
- 2.1 準備環(huán)境
準備兩臺服務(wù)器分別為:
backup 外網(wǎng)ip:10.0.0.41 內(nèi)網(wǎng)ip:172.16.1.41
nfs01 外網(wǎng)ip: 10.0.0.31 內(nèi)網(wǎng)ip:172.16.1.31
分別在兩臺機器做好/etc/hsots解析:
vim /etc/hosts
172.16.1.31 nfs01
172.16.1.41 backup
-
2.2更改配置文件/etc/rsycnd.conf(清空原有的)
image.png - 2.3 配置服務(wù)端(backup端10.0.0.41)
(1)創(chuàng)建虛擬用戶為了安全
useradd -s /sbin/nologin -M rsync
cat /etc/passwd|grep rsync
rsync:x:1001:1001::/home/rsync:/sbin/nologin
(2)創(chuàng)建一個目錄跟模塊中的設(shè)置成一樣的
mkdir -p /data
(3)授權(quán)讓rsync用戶管理這個/data
chow -R rsync.rsync /data
[root@backup ~]# ll -d /data
drwxr-xr-x 4 rsync rsync 43 May 22 11:36 /data
(4)給這個用戶設(shè)置個密碼文件(主要是為了安全)
echo 'rsync_backup:123456' > /etc/rsync.password
chmod 600 /etc/rsyncd.conf
這里的的密碼文件要設(shè)置為用戶家密碼
(5)啟動rsync服務(wù)并且加入開自己啟動(centos7)
systemctl start rsyncd
systemctl enable rsyncd
netstat -luntp|grep 873 - 2.4 配置客戶端(nfs端10.0.0.31)
echo '123456' > /etc/rsync.password
chomd 600 /etc/rsync.passwd
這里不需要配置別的只是需要配置一個密碼文件設(shè)置一個權(quán)限就行配置密碼要跟服務(wù)端的密碼一樣設(shè)置權(quán)限安全
這樣就配置玩了然后執(zhí)行rsnyc檢驗一下就OK
rsync -avz /backup/ rsync_backup@172.16.1.41::data --password-file=/etc/rsync.password
切換到服務(wù)端查看/data/目錄下面有沒有backup,有表示OK。
3 rsync 參數(shù)
rsync 參數(shù) 源 目標
-- delete 進行無差異同步
-v, --verbose --- 顯示傳輸數(shù)據(jù)過程信息
-z, --compress --- 將傳輸數(shù)據(jù)進行壓縮
-a, --archive --- 歸檔參數(shù) -rtopgDl (不包括參數(shù) -L)
-r, --recursive --- 遞歸傳輸數(shù)據(jù)
-t, --times --- 保持文件修改時間不變
-o, --owner --- 保持文件屬主信息不變(在配置文件中uid設(shè)置為root用戶)
-g, --group --- 保持文件屬組信息不變(在配置文件中g(shù)id設(shè)置為root用戶)
-p, --perms --- 保持文件權(quán)限不變
-D --- 保持設(shè)置文件信息不變
-l, --links --- 只傳輸鏈接文件,不會傳輸源文件中的內(nèi)容 (bug)
-L, --- 只傳輸鏈接文件,會傳輸源文件中的內(nèi)容
-P, --progress --- 顯示數(shù)據(jù)傳輸?shù)倪M度信息(查看傳輸進度)
-- exclude ---排除某個東西不傳輸
-- --bwlimit ----限制速度傳輸
4 scp用法以及參數(shù)
scp [參數(shù)] 源文件 目標文件
scp -rp /etc/ 192.168.1.201:/tmp
這里加參數(shù)-rp是因為scp自己本身不支持推送目錄需要參數(shù)
5 rsync報錯
(1)bash: rsync: command not found
遠程服務(wù)器中沒有這個命令
檢查遠程服務(wù)器是否安裝了rsync 沒有yum安裝即可
(2)ssh: connect to host 176.16.1.31 port 22: Connection refused
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.2]
遠程連接拒接 Connection refused
檢查是否能ping通對應(yīng)服務(wù)器
查看/etc/hosts解析
(3)Password:
@ERROR: auth failed on module data
rsync error: error starting client-server protocol (code 5) at main.c(1648) [sender=3.1.2]
密碼寫錯
密碼文件 不存在
密碼文件 權(quán)限不對
6全網(wǎng)備份項目
···
···

··
在把想對應(yīng)的腳本加入到定時任務(wù)就行

