Rsync數據同步工具應用指南

Rsync數據同步工具應用指南


描述
       Rsync是一種快速而非常通用的文件複製工具。它可以通過任何遠程shell或遠程rsync從本地複製到另一臺主機
       守護進程它提供了大量的選項來控制其行爲的各個方面,並允許非常靈活地規定文件集
       複製。它的delta傳遞算法是着名的,它減少了通過網絡發送的數據量,只發送它們之間的差異
       源文件和目標中的現有文件。 Rsync廣泛用於備份和鏡像以及日常使用的改進的複製命令。


       Rsync使用“快速檢查”算法(默認情況下)查找需要傳輸的文件,該算法可以查找大小更改或最後修改的文件
       時間。當快速檢查指示時,其他保留屬性的任何更改(由選項請求)在目標文件上進行
       該文件的數據不需要更新。






名稱
       rsync  - 快速,通用,遠程(和本地)文件複製工具


概要
       本地:rsync [OPTION ...] SRC ... [DEST]


       通過遠程shell訪問:
         拉:rsync [OPTION ...] [USER @]主機:SRC ... [DEST]
         推:rsync [OPTION ...] SRC ... [USER @]主機:DEST


       通過rsync守護進程訪問:
         拉:rsync [OPTION ...] [USER @] HOST :: SRC ... [DEST]
               rsync [OPTION ...] rsync:// [USER @] HOST [:PORT] / SRC ... [DEST]
         推:rsync [OPTION ...] SRC ... [USER @] HOST :: DEST
               rsync [OPTION ...] SRC ... rsync:// [USER @] HOST [:PORT] / DEST




       僅使用一個SRC參數和DEST參數的用法將列出源文件而不是複製。








一般
       Rsync將文件複製到遠程主機或從遠程主機複製文件,也可以在當前主機上覆制文件(不支持在兩臺遠程主機之間複製文件)。


       rsync有兩種不同的方式與遠程系統聯繫:使用遠程shell程序作爲傳輸(如ssh或rsh)或聯繫rsync
       守護進程直接通過TCP。只要源或目標路徑在主機規範之後包含單個冒號(:)分隔符,則使用遠程shell傳輸。
       通知。當源或目標路徑包含一個雙冒號(:)分隔符後,直接發生rsync守護進程,
       或者指定了rsync:// URL時(也參見“通過遙控器連接使用RSYNC-DAEMON功能”部分)。
       規則)。


       作爲一種特殊情況,如果在沒有目的地的情況下指定了單個源arg,則以與“ls -l”類似的輸出格式列出文件。


       如預期的那樣,如果源路徑或目標路徑都不指定遠程主機,則該副本在本地發生(另請參閱--list-only選項)。


       Rsync將本地側稱爲“客戶端”,將遠程端稱爲“服務器”。不要將“服務器”與rsync守護程序混淆 - 守護程序始終爲a
       服務器,但服務器可以是守護進程或遠程shell生成的進程。


建立
       有關安裝說明,請參閱README文件。


       一旦安裝,您可以將rsync用於可以通過遠程shell訪問的任何計算機(以及可以使用rsync守護程序模式進行訪問的某些機器)
       tocol)。對於遠程傳輸,現代rsync使用ssh進行通信,但默認情況下可能已配置爲使用其他遠程shell,
       如rsh或remsh。


       您還可以通過使用-e命令行選項或通過設置RSYNC_RSH環境變量來指定任何您喜歡的遠程shell。


       請注意,rsync必須安裝在源計算機和目標計算機上。


用法
       您使用rsync的方法與使用rcp相同。您必須指定源和目的地,其中一個可能是遠程的。


       解釋語法的最好方法也許是一些例子:


              rsync -t * .c foo:src /




       這將將匹配模式* .c的所有文件從當前目錄傳輸到機器foo上的目錄src。如果任何文件已經存在
       在遠程系統上,rsync遠程更新協議用於通過僅發送差異來更新文件。有關詳細信息,請參閱技術報告。


              rsync -avz foo:src / bar / data / tmp




       這將遞歸地將所有文件從機器foo上的目錄src / bar傳輸到本地機器上的/ data / tmp / bar目錄中。文件是
       轉移到“歸檔”模式,這確保了傳輸中的符號鏈接,設備,屬性,權限,所有權等。 Addi-
       這些壓縮將用於減少傳輸數據部分的大小。


              rsync -avz foo:src / bar / / data / tmp




       源上的尾部斜線會更改此行爲,以避免在目標位置創建額外的目錄級別。你可以想到一個尾隨/一個
       源代碼意思是“複製該目錄的內容”,而不是“按目錄複製目錄”,但是在這兩種情況下,
       tory被傳輸到目的地的包含目錄。換句話說,以下每個命令以相同的方式複製文件,
       包括他們設置/ dest / foo的屬性:


              rsync -av / src / foo / dest
              rsync -av / src / foo / / dest / foo




       還要注意,主機和模塊引用不需要尾部斜槓來複制默認目錄的內容。例如,這兩個都複製了
       遠程目錄的內容爲“/ dest”:


              rsync -av主機:/ dest
              rsync -av host :: module / dest




       您也可以在本地模式下使用rsync,源和目標在名稱中都沒有“:”。在這種情況下,它的行爲就像一個改進的副本
       命令。


       最後,您可以通過省略模塊名稱來列出特定rsync守護程序中可用的所有(可列出)模塊:


              rsync somehost.mydomain.com ::




       有關詳細信息,請參閱以下部分。


高級用途
       從遠程主機請求多個文件的語法是通過指定與第一個相同樣式的其他遠程主機參數來實現的,或者使用
       主機名省略。例如,所有這些工作:


              rsync -av主機:file1:file2 host:file {3,4} / dest /
              rsync -av host :: modname / file {1,2} host :: modname / file3 / dest /
              rsync -av host :: modname / file1 :: modname / file {3,4}




       舊版本的rsync需要在SRC中使用引用的空格,就像這些例子一樣:


              rsync -av主機:'dir1 / file1 dir2 / file2'/ dest
              rsync host ::'modname / dir1 / file1 modname / dir2 / file2'/ dest




       這個分詞在最新的rsync中仍然有效(默認情況下),但並不像第一種方法那麼容易使用。


       如果需要傳輸一個包含空格的文件名,可以指定--protect-args(-s)選項,或者你需要轉義空格
       以遠程shell將會理解的方式。例如:


              rsync -av主機:'file \ name \ with \ spaces'/ dest




連接到RSYNC DAEMON
       也可以使用沒有遠程shell的rsync作爲傳輸。在這種情況下,您將直接連接到通常使用的遠程rsync守護程序
       TCP端口873.(這顯然需要守護進程在遠程系統上運行,因此請參考“啓動RSYNC DAEMON以接受連接”部分
       以下信息。)


       以這種方式使用rsync與使用遠程shell相同,除了:


       o您使用雙冒號::而不是單個冒號將主機名與路徑分開,或者使用rsync:// URL。


       o“路徑”的第一個字實際上是一個模塊名稱。


       o遠程守護程序可能打印您連接的當天的消息。


       o如果在遠程守護程序上沒有指定路徑名,則將顯示守護程序上的可訪問路徑列表。


       o如果您不指定本地目標,則提供遠程守護程序上指定文件的列表。


       o您不能指定--rsh(-e)選項。




       複製名爲“src”的遠程模塊中的所有文件的示例:


           rsync -av host :: src / dest




       遠程守護程序上的某些模塊可能需要驗證。如果是這樣,您將在連接時收到密碼提示。您可以避免密碼提示
       通過將環境變量RSYNC_PASSWORD設置爲要使用的密碼或使用--password-file選項。腳本編寫時可能會有用
       rsync。


       警告:在某些系統上,所有用戶都可以看到環境變量。建議使用--password-file的系統。


       您可以通過將環境變量RSYNC_PROXY設置爲指向您的Web代理的主機名:port對來通過Web代理建立連接。注意
       您的Web代理的配置必須支持到端口873的代理連接。


       您還可以通過將環境變量RSYNC_CONNECT_PROG設置爲要運行的命令,使用程序作爲代理建立守護程序連接
       代替直接插座連接。字符串可能包含轉義“%H”來表示rsync命令中指定的主機名(因此使用“%%”
       如果您的字符串中需要單個“%”)。例如:


         導出RSYNC_CONNECT_PROG ='ssh proxyhost nc%H 873'
         rsync -av targethost1 :: module / src // dest /
         rsync -av rsync :: // targethost2 / module / src // dest /




       上面指定的命令使用ssh在proxyhost上運行nc(netcat),該主機將所有數據轉發到目標主機(%H)上的端口873(rsync守護程序)。


使用RSYNC-DAEMON功能,通過遠程外殼連接
       使用rsync守護程序(例如命名模塊)的各種功能,實際上不允許任何新的套接字連接到系統中是有用的
       (除了允許遠程shell訪問所需的以外)。 Rsync支持使用遠程shell連接到主機,然後產生一次性使用
       “守護進程”服務器,希望在遠程用戶的主目錄中讀取其配置文件。如果要加密守護進程式傳輸,這可能很有用
       數據,但是由於守護進程由遠程用戶啓動,您可能無法使用chroot等功能或更改守護程序使用的uid。
       (對於加密守護進程傳輸的另一種方式,請考慮使用ssh將本地端口隧道傳送到遠程計算機,然後在其上配置正常的rsync守護程序
       遠程主機只允許從“localhost”連接。)


       從用戶的角度來看,通過遠程shell連接傳輸的守護進程使用與普通rsync-daemon傳輸幾乎相同的命令行語法,
       唯一的例外是您必須使用--rsh = COMMAND選項在命令行上顯式設置遠程shell程序。 (設置RSYNC_RSH
       環境將不會啓用此功能。)例如:


           rsync -av --rsh = ssh host :: module / dest




       如果您需要指定一個不同的遠程shell用戶,請記住主機前面的用戶@前綴是指定rsync-user值(對於mod-
       這需要基於用戶的身份驗證)。這意味着您必須在指定remote-shell時給“s”用戶指定“-l user”選項,如本示例所示
       它使用簡短版本的--rsh選項:


           rsync -av -e“ssh -l ssh-user”rsync-user @ host :: module / dest




       “ssh-user”將在ssh級使用; “rsync-user”將用於登錄到“模塊”。


啓動RSYNC DAEMON接受連接
       爲了連接到rsync守護程序,遠程系統需要有一個守護進程已經運行(或者需要配置像inetd那樣的
       爲特定端口上的傳入連接生成rsync守護進程)。有關如何啓動將處理傳入套接字的守護進程的完整信息
       節,請參閱rsyncd.conf(5)手冊頁 - 即守護程序的配置文件,它包含有關如何運行守護程序的完整詳細信息(包括
       獨立和inetd配置)。


       如果您正在使用其中一個遠程shell傳輸進行傳輸,則不需要手動啓動rsync守護程序。


有條件轉讓訂單
       Rsync始終將指定的文件名排序到其內部傳輸列表中。這將處理相同命名的directo-
       ries,可以輕鬆地刪除重複的文件名,並且可能會使文件按照與在
       命令行。


       如果您需要將特定文件轉移到另一個文件之前,請將文件分離爲不同的rsync調用,或者考慮使用--delay-updates
       (這不影響排序的傳輸順序,但確實使最終的文件更新階段更快地發生)。


例子
       以下是使用rsync的一些示例。


       要備份我的妻子的主目錄,包括大型MS Word文件和郵件文件夾,我使用運行的cron作業


              rsync -Cavz。 arvidsjaur:備份




       每個晚上通過PPP連接到我的機器上的重複目錄“arvidsjaur”。


       要同步我的samba源碼樹,我使用以下Makefile目標:


           得到:
                   rsync -avuzb --exclude'*?'samba:samba /。
           放:
                   rsync -Cavuzb。桑巴:桑巴/
           同步:得到




       這允許我與連接另一端的CVS目錄同步。然後我在遠程機器上進行CVS操作,節省了大量的時間
       遠程CVS協議不是很有效率。


       我使用以下命令鏡像我的“舊”和“新”ftp站點之間的目錄:


       rsync -az -e ssh --delete?ftp / pub / samba nimbus:“?ftp / pub / tridge”


       這是從cron每幾個小時推出的。


選項概要
       以下是rsync中可用選項的簡要摘要。請參閱下面的詳細說明,以獲得完整的說明。


        -v, -  verbbose增加冗長度
        -q,--quiet抑制非錯誤消息
            --no-motd抑制守護進程模式MOTD(見警告)
        -c,--checksum跳過基於校驗和,而不是mod-time&size
        -a, - 歸檔歸檔模式;等於-rlptgoD(無-H,-A,-X)
            --no-OPTION關閉隱含的選項(例如--no-D)
        -r,-recursive遞歸到目錄中
        -R, - 相對使用相對路徑名
             - 沒有暗示的目錄不會發送隱含的目錄 - 相對的
        -b,--backup進行備份(請參閱--suffix&--backup-dir)
            --backup-dir = DIR使DIR中的備份成爲層次結構
            --suffix = SUFFIX備份後綴(默認?w / o --backup-dir)
        -u, - 更新跳過接收器上較新的文件
             - 就地更新目標文件
             - 將數據附加到較短的文件
            --append-verify  - 在文件校驗和中附加舊數據
        -d,--dirs傳遞目錄而不進行遞歸
        -l,--links將符號鏈接複製爲符號鏈接
        -L,--copy-links將符號鏈接轉換爲對象文件/目錄
            --copy-unsafe-links僅轉換“不安全”符號鏈接
            --safe-links忽略指向樹外部的符號鏈接
        -k,--copy-dirlinks將符號鏈接轉換爲指示目錄
        -K,--keep-dirlinks將接收器上的符號符號作爲目錄
        -H, - 硬鏈接保存硬鏈接
        -p,--perms保留權限
        -E,可執行性保持可執行性
            --chmod = CHMOD影響文件和/或目錄權限
        -A,--acls保留ACL(意爲-p)
        -X, -  xattrs保留擴展屬性
        -o, - 所有者所有者(僅限超級用戶)
        -g,--group保存組
             - 設備保存設備文件(僅限超級用戶)
             - 複製設備將設備內容複製爲常規文件
             - 特殊保存特殊文件
        -D與 - 設備相同 - 特殊
        -t, - 保留修改時間
        -O,-omit-dir-times忽略來自--times的目錄
             - 超級接收器嘗試超級用戶活動
             - 使用xattrs的fake-super store / recover特權attrs
        -S, - 有效處理稀疏文件
        -n,--dry-run執行試運行,不做任何更改
        -W, - 全文件拷貝文件(w / o delta-xfer算法)
        -x,--one-file-system不跨越文件系統邊界
        -B,--block-size = SIZE強制一個固定的校驗和塊大小
        -e,--rsh = COMMAND指定要使用的遠程shell
            --rsync-path  PROGRAM指定rsync在遠程計算機上運行
            --existing 在接收器上跳過創建新文件
            --ignore-existing  skip更新接收器上存在的文件
            --remove-source-files  sender刪除同步文件(非目錄)
            --del  --delete-during的別名
            --delete 從dest dirs中刪除無關文件
            --delete-before 接收方在傳輸之前刪除(默認)
            --delete-during 接收器在xfer期間刪除,而不是之前
            --delete-delay 查找刪除,刪除之後
            --delete-after 接收方在傳輸後刪除,而不是之前
            --delete-excluded 也刪除dest dirs中的排除文件
            --ignore-errors 刪除即使有I / O錯誤
            --force =強制刪除目錄,即使不是空的
            --max-delete  NUM??不刪除超過NUM個文件
            --max-size  SIZE不傳輸任何大於SIZE的文件
            --min-size SIZE不傳輸任何小於SIZE的文件
            --partial 保留部分傳輸的文件
            --partial-dir = DIR將部分傳輸的文件放入DIR
            --delay-updates將所有更新的文件放在最後
        -m,--prune-empty-dirs從文件列表中修剪空目錄鏈
            --numeric-id不按用戶/組名映射uid / gid值
            --timeout = SECONDS設置I / O超時(以秒爲單位)
            --contimeout = SECONDS設置守護程序連接超時(以秒爲單位)
        -I,--ignore-times不要跳過匹配大小和時間的文件
             - 僅尺寸跳過符合大小的文件
            --modify-window = NUM??比較mod-times,降低精度
        -T,--temp-dir = DIR在目錄DIR中創建臨時文件
        -y, - 如果沒有dest文件,模糊找到類似的文件爲基礎
            --compare-dest = DIR還將相對於DIR的接收文件進行比較
            --copy-dest = DIR ...幷包含未更改的文件的副本
            --link-dest = DIR硬鏈接到DIR中的文件不變
        -z, - 在傳輸過程中壓縮壓縮文件數據
            --compress-level = NUM??顯式設置壓縮級別
            --skip-compress = LIST在LIST中跳過使用後綴壓縮文件
        -C,--cvs-以與CVS相同的方式排除自動忽略文件
        -f,--filter = RULE添加文件過濾規則
        -F與--filter ='dir-merge /.rsync-filter'相同
                                    重複:--filter =' -  .rsync-filter'
            --exclude = PATTERN排除匹配PATTERN的文件
            --exclude-from = FILE從FILE讀取排除模式
            --include = PATTERN不排除匹配PATTERN的文件
            --include-from = FILE read包含來自FILE的模式
            --files-from = FILE從FILE讀取源文件名的列表
        -0,--from0 all / from / filter文件由0分隔
        -s,--protect-args沒有空間分裂;只有通配符字符
            --address =發送套接字到守護進程的ADDRESS綁定地址
            --port = PORT指定雙冒號備用端口號
            --sockopts = OPTIONS指定自定義TCP選項
            --blocking-io使用阻塞I / O作爲遠程shell
            --stats提供一些文件傳輸統計信息
        -8,--8位輸出使高位字節在輸出中未轉義
        -h, - 人類可讀的輸出數字
             - 進度顯示轉移過程中的進度
        -P相同於--partial  - 進度
        -i,--itemize-changes輸出所有更新的更改摘要
            --out-format =使用指定格式的FORMAT輸出更新
            --log-file = FILE記錄我們正在對指定的文件做什麼
            --log-file-format =使用指定FMT的FMT日誌更新
            --password-file = FILE讀取守護程序 - 從FILE訪問密碼
             - 僅列出列表的文件,而不是複製它們
            --bwlimit = KBPS限制I / O帶寬;千字節/秒
            --write-batch = FILE將批量更新寫入FILE
            --only-write-batch = FILE like --write-batch,但是沒有更新dest
            --read-batch = FILE從FILE讀取批量更新
            --protocol = NUM??強制使用較舊的協議版本
            --iconv = CONVERT_SPEC請求字符集轉換文件名
            --checksum-seed = NUM?? set block / file checksum seed(advanced)
        -4,--ipv4喜歡IPv4
        -6,--ipv6喜歡IPv6
            --version打印版本號
       (-h)--help顯示這個幫助(見下面的-h註釋)




       Rsync也可以作爲守護進程運行,在這種情況下可以接受以下選項:


            --daemon作爲rsync守護進程運行
            --address = ADDRESS綁定到指定的地址
            --bwlimit = KBPS限制I / O帶寬;千字節/秒
            --config = FILE指定備用rsyncd.conf文件
             - 不分離不要與父母分離
            --port =端口偵聽備用端口號
            --log-file = FILE覆蓋“日誌文件”設置
            --log-file-format = FMT覆蓋“日誌格式”設置
            --sockopts = OPTIONS指定自定義TCP選項
        -v, -  verbbose增加冗長度
        -4,--ipv4喜歡IPv4
        -6,--ipv6喜歡IPv6
        -h,--help顯示此幫助(如果在--daemon後使用)
        
   
   
        


rsync 同步服務器與客戶端配置




###########服務器段配置############
1.系統版本
#cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core)




2.編輯配置


單個目錄配置
#vim /etc/rsyncd.conf


uid = rsync
gid = rsync
port = 19873  ###rsync的默認端口是873,這裏是可以更改的
use chroot = no
max connections = 200
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
transfer logging = yes
timeout = 900
ignore nonreadable = yes
dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2


[data]
       path = /data
       read only = false
       list = false
       hosts allow = 10.1.0.0/16
       auth users = admin
       secrets file = /etc/rsyncd.password   


共享多個目錄的配置    
uid=root
gid=root
port = 19873  ###rsync的默認端口是873,這裏是可以更改的
list = no
max connections=36000
use chroot=no
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
auth users = root
strict modes = yes
secrets file = /etc/rsyncd.up
ignore errors = yes
read only = no
hosts allow = *
hosts deny = *


[data]
path=/home/data
 
[config]
path=/home/config


[www]
path=/home/www
3.創建帳號和客戶端登陸帳號密碼
groupadd rsync
useradd  -g rsync rsync -s /sbin/nologin -M
echo "admin:MyPassword" >> /etc/rsyncd.password
chmod 600 /etc/rsyncd.password 
4.創建目錄
mkdir -pv /data
chown -R rsync.rsync /data
5.啓動服務


rsync --daemon
或者
systemctl start rsyncd


檢查是否啓動和報錯
ss -tnl | grep 19873
cat /var/log/rsyncd.log 


##############客戶端配置#############
1.檢查rsync軟件是否安裝
rpm -qa rsync
2.配置密碼文件
echo "MyPassword" >> /etc/rsyncd.password
chmod 600 /etc/rsyncd.password 


3.進行文件同步
rsync -avz /var/ftp/Software/02_Avaya [email protected]::data --password-file=/etc/rsyncd.password   ###向rsync服務器進行無需輸入密碼的文件推送


查看服務器端的日誌進行驗證
cat /var/log/rsyncd.log 
2017/03/04 01:10:22 [27174] rsyncd version 3.0.9 starting, listening on port 873
2017/03/04 01:20:14 [27174] rsync error: received SIGINT, SIGTERM, or SIGHUP (code 20) at rsync.c(551) [Receiver=3.0.9]
2017/03/04 01:51:54 [27275] connect from www.ftp.htjr.com (10.1.41.54)
2017/03/04 01:51:54 [27275] rsync to data/ from [email protected] (10.1.41.54)
2017/03/04 01:51:54 [27275] receiving file list
2017/03/04 01:51:54 [27275] 02_Avaya/
2017/03/04 01:52:02 [27275] recv www.ftp.htjr.com [10.1.41.54] data (admin) 02_Avaya/Avaya one-X Communicator Suite.exe 139076360
2017/03/04 01:52:02 [27275] sent 99 bytes  received 138425856 bytes  total size 139076360


注:如果我們想進行定時的文件備份可以寫成crontab
#crontab -e
*  *  *  *  *   /usr/bin/rsync  -avz /var/ftp/Software/02_Avaya [email protected]::data --password-file=/etc/rsyncd.password


實例:
1 */3 * * * nohup rsync -avP --delete --chmod=ugo=rwx --password-file=/etc/rsyncd.password --port=19873 /var/ftp/Software/02_Avaya [email protected]::data &






重啓rsync的組合命令
pkill rsync    #關閉rsync服務
kill `cat /var/run/rsyncd.pid`
rsync --daemon #啓動rsync服務
檢查啓動的進程
ps -ef | grep rsync  #檢查rsync服務


防止rsync服務停止腳步:


#/bin/bash
if [ `ps -ef|grep "rsync --daemon"|grep -v grep|wc -l` -eq 0 ]
 then
 rsync --daemon
fi


rsync server:
1.vim /etc/rsyncd.conf (用戶,目錄,模塊,虛擬用戶 及密碼文件)
2.創建共享目錄 /data
3.創建rsync用戶。並且授權訪問 /data
4.創建密碼文件,複製配置文件裏的路徑,然後添加密碼內容。
  內容 虛擬用戶名:密碼
5.密碼文件權限600
6.rsync --daemon 然後放入/etc/rc.local
7.tail /var/log/rsyncd.log


rsync client (多個)
1.密碼文件和服務端沒有任何關係。命令時
--password-file=/etc/rsync.password 內容:密碼
2./etc/rsync.password 600


3.同步:
Access via rsync daemon:
         Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
               rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
         Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
               rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST


拉:pull
rsync [OPTION...] [USER@]HOST::SRC... [DEST]
rsync -avz [email protected]::data /var/ftp/Software/02_Avaya --password-file=/etc/rsyncd.password
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
rsync -avz rsync://[email protected]/data /var/ftp/Software/02_Avaya --password-file=/etc/rsyncd.password


推:push
rsync [OPTION...] SRC... [USER@]HOST::DEST
rsync -avz /var/ftp/Software/02_Avaya [email protected]::data  --password-file=/etc/rsyncd.password
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
rsync -avz /var/ftp/Software/02_Avaya rsync://[email protected]/data  --password-file=/etc/rsyncd.password


排錯:
1.防火牆和selinux
2./var/log/rsyncd.log
3.整體部署流程整體考慮排查
4.操作習慣當做一個大事




架設rsync服務器的示例說明;




全局定義;


在rsync 服務器中,全局定義有幾個比較關健的,根據我們前面所給的配置文件 rsyncd.conf 文件;
pid file = /var/run/rsyncd.pid   注:告訴進程寫到 /var/run/rsyncd.pid 文件中;
port = 873  注:指定運行端口,默認是873,您可以自己指定;
address = 192.168.1.171  注:指定服務器IP地址;
uid = nobody
gid = nobdoy
注:服務器端傳輸文件時,要發哪個用戶和用戶組來執行,默認是nobody。 如果用nobody 用戶和用戶組,可能遇到權限問題,有些文件從服務器上拉不下來。所以我就偷懶,爲了方便,用了root 。不過您可以在定義要同步的目錄時定義的模塊中指定用戶來解決權限的問題。


use chroot = yes
注:用chroot,在傳輸文件之前,服務器守護程序在將chroot 到文件系統中的目錄中,這樣做的好處是可能保護系統被安裝漏洞侵襲的可能。缺點是需要超級用戶權限。另外對符號鏈接文件,將會排除在外。也就是說,你在rsync服務器上,如果有符號鏈接,你在備份服務器上運行客戶端的同步數據時,只會把符號鏈接名同步下來,並不會同步符號鏈接的內容;這個需要自己來嘗試;


read only = yes
注:read only 是隻讀選擇,也就是說,不讓客戶端上傳文件到服務器上。還有一個 write only選項,自己嘗試是做什麼用的吧;


#limit access to private LANs
hosts allow=192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0
注:在您可以指定單個IP,也可以指定整個網段,能提高安全性。格式是ip 與ip 之間、ip和網段之間、網段和網段之間要用空格隔開;


max connections = 5
注:客戶端最多連接數;


motd file = /etc/rsyncd/rsyncd.motd
注:motd file 是定義服務器信息的,要自己寫 rsyncd.motd 文件內容。當用戶登錄時會看到這個信息。比如我寫的是:




log file = /var/log/rsync.log
注:rsync 服務器的日誌;


transfer logging = yes
注:這是傳輸文件的日誌;


log format = %t %a %m %f %b
syslog facility = local3


timeout = 300 
注: 默認是0,意no timeout,建議爲300~600(5-10分鐘)


模塊定義;


模塊定義什麼呢?主要是定義服務器哪個目錄要被同步。每個模塊都要以[name]形式。這個名字就是在rsync 客戶端看到的名字,其實有點象Samba服務器提供的共享名。而服務器真正同步的數據是通過 path 來指定的。我們可以根據自己的需要,來指定多個模塊。每個模塊要指定認證用戶,密碼文件、但排除並不是必須的;
下面前面配置文件模塊的例子:


[linuxsirhome]
注:模塊,它爲我們提供了一個鏈接的名字,鏈接到哪呢,在本模塊中,鏈接到了/home目錄;要用[name] 形式;
path = /home    注:指定文件目錄所在位置,這是必須指定的;
auth users = linuxsir   注:認證用戶是linuxsir  ,是必須在 服務器上存在的用戶;
list=yes   注:list 意思是把rsync 服務器上提供同步數據的目錄在服務器上模塊是否顯示列出來。默認是yes 。如果你不想列出來,就no ;如果是no是比較安全的,至少別人不知道你的服務器上提供了哪些目錄。你自己知道就行了;
ignore errors  注:忽略IO錯誤,詳細的請查文檔;
secrets file = /etc/rsyncd/rsyncd.secrets   注:密碼存在哪個文件;
comment = linuxsir home  data  注:註釋可以自己定義,寫什麼都行,寫點相關的內容就行;
exclude =   beinan/   samba/
注:exclude 是排除的意思,也就是說,要把/home目錄下的beinan和samba 排除在外; beinan/和samba/目錄之間有空格分開 ;


[beinan]
path = /opt  注:指定文件目錄所在位置;
list=no
comment = optdir
auth users = beinan  注:是必段在服務器上存在的用戶;
secrets file = /etc/rsyncd/rsyncd.secrets
ignore errors






客戶端rsync命令排除:
排除單個文件:
rsync -avz --exclude=a  /var/ftp/Software/02_Avaya [email protected]::data --password-file=/etc/rsyncd.password


排除多個文件:
rsync -avz --exclude={a,b}  /var/ftp/Software/02_Avaya [email protected]::data --password-file=/etc/rsyncd.password
rsync -avz --exclude=a --exclude=b /var/ftp/Software/02_Avaya [email protected]::data --password-file=/etc/rsyncd.password
rsync -avz --exclude={a..g} /var/ftp/Software/02_Avaya [email protected]::data --password-file=/etc/rsyncd.password
rsync -avz --exclude-from=paichu.log /var/ftp/Software/02_Avaya [email protected]::data --password-file=/etc/rsyncd.password


服務器端排除參數:/etc/rsyncd.conf里加
exclude=a b test/dexter.txt


無差異同步
--delete
rsync推送企業工作場景:
1)備份 --delete風險
本地有啥,遠端有啥,本地沒有的遠端有也要刪除。服務器端的目錄數據可以能丟失
實例:rsync -avz --delete --chmod=ugo=rwx --password-file=/etc/rsyncd.down --port=19873 /data 192.168.1.162::data 
rsync拉去企業工作場景
1)代碼發佈,下載。--delete風險
遠端有啥,本地有啥,遠端沒有的本地有也要刪除。本地的目錄數據可以能丟失
實例:rsync -avz --delete --chmod=ugo=rwx --password-file=/etc/rsyncd.down --port=19873 192.168.1.162::data /data 

當192.168.1.162::data裏沒有某個文件時(比如被刪除了),本地服務器的有這個文件也會被刪除


rsync官網:http://rsync.samba.org

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章