首頁>技術>

作者簡介

一、什麼是rsync

rsync:“remote sync”是一個本地遠端同步檔案的工具。在第一次連通完成時,會把整份檔案傳輸一次,下一次就只傳送兩個檔案之間不同的部分。

二、rsync同步的兩種方式

1)直接使用rsync命令,使用SSH協議,預設為22埠

2)rsync daemon形式,使用rsync協議,預設為873埠

三、同步命令

三種方法的同步命令之間的區別就是“:”的個數,本地同步無“:”,命令行同步一個“:”,daemon形式的同步兩個”:“。

1)本地檔案同步

rsync [OPTION...] [USER@]HOST::SRC... [DEST]rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]

2)本地與遠端同步

pull方法:

rsync [OPTION...] [USER@]HOST:SRC... [DEST]
push方法rsync [OPTION...] SRC... [USER@]HOST:DEST

3)使用rsync程序方式

pull方法

rsync [OPTION...] [USER@]HOST::SRC... [DEST]rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]

push方法:

rsync [OPTION...] SRC... [USER@]HOST::DESTrsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST)

四、詳細描述

remote sync 是一個數據映象備份工具,採用rsync演算法,可以將一個客戶機和遠端檔案伺服器之間的檔案進行同步,也可以在本地系統中將資料從一個分割槽備份到另一個分割槽。如果rsync在備份過程中出現了資料傳輸中斷,恢復後可以繼續傳輸不一致的部分。rsync可以執行完整備份與增量備份。

特點:

1):可以映象儲存整個目錄樹和檔案系統

2):很容易做到保持原來檔案的許可權、時間、軟硬連線

3):無需特殊許可權即可安裝

4):可以增量同步資料,檔案傳輸效率高

5):可以使用rcp、ssh等方式來傳輸檔案,當然也可以直接透過socket連線

6):支援匿名傳輸

五、引數詳解

1)常用引數

-t :將原始檔的modify time也同步到目標機器。它會在同步前先對比兩邊檔案的時間戳和檔案大小,如果一致,則認為兩邊檔案一樣,對次檔案就不進行採取更新動作。如果目標端的檔案的時間戳,大小和源端完全一致,但恰巧內容不一樣時,rsync發現不了的解決這個的辦法是使用I引數。

-I:(大寫i)挨個檔案發起資料同步

-v:獲取日誌資訊

-z:先壓縮再傳輸

-r:遞迴,級聯的進行同步

-a:除了遞迴同步外,還可以同步元資訊(許可權、修改時間等)

-n:模擬命令執行的結果,並不是真正的執行命令

-l(小寫L):同步連結檔案時

-p:保持原始檔的許可權 perserve permissions

-H:同步硬連結

-g -o:保持所屬組和屬主

-exclude:排除某個檔案

-exclude-from:排除寫在某個檔案裡的所有檔名

-progress:顯示出傳輸進度資訊

-partial:斷點續傳

2、所有引數

PDF版本可下載:

rsync -av /shell/ [email protected]:/home/opt/lop

五、常用命令

1)將源目錄複製到目的端

rsync -av /shell/ [email protected]:/home/opt/lop

-a:表示要進行歸檔

-v:表示在stdout上打印出細節資訊或進度

2)壓縮傳輸

透過網路進行傳輸時,壓縮資料能夠明顯改善傳輸效率,用rsync -z指定在網路傳輸時壓縮資料

rsync -avz /shell/lll [email protected]:/home/opt/lllop --exclude "*.txt"

3)將目錄下的內容同步到另一個目錄

rsync -av /shell/ [email protected]:/home/opt/lop

4)將目錄本身同步到另一個目錄

rsync -avz /shell/lll [email protected]:/home/opt/lllop --delete

5)使用rsync進行歸檔的過程中排除部分檔案

--exclude PATTERN

rsync -avz /shell/lll [email protected]:/home/opt/lllop --exclude "*.txt"

6)使用rsync進行歸檔的過程中排除部分檔案,把不需要的檔名寫在file裡面

--exclude-from FILEPATH

rsync -avz /shell/lll [email protected]:/home/opt/lllop --exclude-from /shell/file
rsync -avz /shell/lll [email protected]:/home/opt/lllop --delete

六、daemon模式

1:daemon模式配置檔案

rsync以daemon方式執行的時候使用配置檔案為rsyncd.conf

2:服務端與客戶端

使用daemon模式的時候,一定要分清楚服務端和客戶端,與平時理解的服務端與客戶端不太一樣,被同步的一端為服務端,要把檔案同步到另一端的源端為客戶端。

3:檔案格式

1) rsyncd.conf配置檔案由模組和引數組成,一個模組以寫在方括號裡的模組名稱開始,直到下一個模組,模組裡包含由“name = value”格式的引數。

2)檔案是基於行的,每一行代表一個模組名或者引數

4:啟動方式

daemon模式執行必須啟動的時候加引數 --daemon

rsync --daemon

5:模組配置

1)服務端(目標端,被同步的一端)的配置檔案

# /etc/rsyncd: configuration file for rsync daemon mode# See rsyncd.conf man page for more options.# configuration example:# 全域性配置uid = rootgid = rootuse chroot = nomax connections = 2pid file = /var/run/rsyncd.pidlog file = /var/log/rsyncd.loglock file = /var/run/rsyncd.lock# 模組配置[test]comment = "同步nginx的配置檔案"path = /captain/shellread only = noauth users = rsyncsecrets file = /etc/rsyncd.secretslist = no

rsync.conf包括兩部分,一部分為全域性配置,一部分為模組配置,全域性配置定義rsync的整體行為。

全域性配置

1)uid、gid:當使用非root賬號時,那麼一定要確保服務的的資料夾是否有該非root賬號寫入的許可權

2)use chroot = no :是否可以切換到root目錄,當chroot為yes的時候,客戶端連線模組的時候,先chroot到模組引數指定的目錄下,必須使用root許可權,埠號必須是1024以內,且不能備份path路徑外的連結檔案

3)max connections = 2 :表示同時最大的連線數,也就是同時只能有兩個客戶端對自己進行連線

並且此選項必須與lock file = /var/run/rsyncd.lock 共同使用,若不指定,預設為/var/run/rsyncd.lock

模組部分

每一個模組部分都是一個資料夾或者檔案的rsync同步

1)[modulname]:模組的名稱

2)path = /captain/shell:表示的是當客戶端把資料同步過來將儲存的路徑

3)read only = no :如果為只讀,那麼將不能進行寫同步,所以必須關閉

4)auth users = rsync :用來進行同步的使用者,不需要系統使用者中有,虛擬的就行

5)secrets file = /etc/rsyncd.secrets :表示的是賬號密碼檔案,此檔案可隨意指定,檔案裡必須以username:password的格式

rsync:123456

此檔案許可權必須為600,否則會報錯

6)list = no :表示的是當服務端拒絕客戶端的請求時,是否是直接顯示許可權拒絕,還是現實模組不存在,一般與hosts allow 和hosts deny一起使用,當一個被服務端拒絕的請求進來時,如果設定為 list = no,那麼直接返回模組不存在。

2、服務端賬號密碼檔案

vim /etc/rsyncd.secrets

rsync:123456

3、客戶端配置檔案

客戶端(源端,需將此臺機器上的檔案同步出去)的配置檔案只需做簡單的修改,設定日誌檔案和pid檔案路徑,然後啟動rsync即可‍

pid file = /var/run/rsyncd.pidlog file = /var/log/rsyncd.log

4、客戶端密碼檔案

vim /etc/rsyncd.passwd

123456

5、啟動dameon

分別在服務端和客戶端啟動rsync

rsync --daemon

6、同步命令

rsync -avz --password-file=/etc/rsyncd.passwd /data/shell/ [email protected]::test

-avz:表示同步過程中輸出資訊顯示的格式

--password-file=/etc/rsyncd.passwd :表示客戶端將拿此密碼去服務端進行認證,所以這個檔案裡的秘密為上面服務的所設定的密碼,只需passwd

/data/shell/ :表示源目錄,將要把此目錄下的所有檔案同步到遠端。

注:這裡有無/的區別:有/的時候表示的是/data/shell/目錄下的東西同步過去而無/的時候表示的是把shell目錄同步過去

七、監控目錄變化

1、檢視核心是否支援inotify機制

 6、監控指令碼

2、安裝

#!/bin/bash#目標IPip1=10.0.0.75rsync_passwd_file=/etc/rsync.secrets/usr/local/bin/inotifywait -mrq --format '%Xe %w%f' -e create,move,attrib,open,close,modify /test | while read filesdoecho $filesEVENT=`echo $files|awk -F" " '{print $1}'`echo $EVENTFile=`echo $files|awk -F" " '{print $2}'`echo $Fileif [[ $EVENT = "CREATE" ]] || [[ $EVENT = "MODIFY" ]] || [[  $EVENT = "MOVED_TO" ]]  ;thenecho "Create or Modify or Moved_to"        rsync -avzcr --password-file=$rsync_passwd_file $(dirname $File) root@$ip1::mydatafiif [[ $EVENT = "DELETE" ]] || [[ $EVENT = "MOVED_FROM" ]] ;thenecho "Delete or Moved_From"        rsync -avzcr --delete --password-file=$rsync_passwd_file $(dirname $File) root@$ip1::mydatafiif [[ $EVENT = "ATTRIB" ]] ;thenecho "Attribe"if [[ ! -d $File ]] ;then            rsync -avzcr --password-file=$rsync_passwd_file $(dirname $File) root@$ip1::mydatafifidone

3、監控某個目錄的變化

inotifywait -rme modify,attrib,move,close_write,create,delete,delete_self /software/mminotifywait -mqr --format '%Xe %w%f' -e modify,create,delete,attrib /data/
4、監控除了某個目錄
inotifywait --exclude '^/software/mm/ll' -rme modify,move,close_write,create,delete,delete_self /software/mm

5:統計檔案目錄下的變化次數

inotifywatch -v -e access -e modify -t 120  -r /software/mm/
 6、監控指令碼
#!/bin/bash#目標IPip1=10.0.0.75rsync_passwd_file=/etc/rsync.secrets/usr/local/bin/inotifywait -mrq --format '%Xe %w%f' -e create,move,attrib,open,close,modify /test | while read filesdoecho $filesEVENT=`echo $files|awk -F" " '{print $1}'`echo $EVENTFile=`echo $files|awk -F" " '{print $2}'`echo $Fileif [[ $EVENT = "CREATE" ]] || [[ $EVENT = "MODIFY" ]] || [[  $EVENT = "MOVED_TO" ]]  ;thenecho "Create or Modify or Moved_to"        rsync -avzcr --password-file=$rsync_passwd_file $(dirname $File) root@$ip1::mydatafiif [[ $EVENT = "DELETE" ]] || [[ $EVENT = "MOVED_FROM" ]] ;thenecho "Delete or Moved_From"        rsync -avzcr --delete --password-file=$rsync_passwd_file $(dirname $File) root@$ip1::mydatafiif [[ $EVENT = "ATTRIB" ]] ;thenecho "Attribe"if [[ ! -d $File ]] ;then            rsync -avzcr --password-file=$rsync_passwd_file $(dirname $File) root@$ip1::mydatafifidone

12
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 深度卷積網路識別地震斷層實戰(附程式)