rsync 遠端資料同步工具詳解
rysnc(remote synchronize)在CentOS系統預設安裝在/usr/bin,此外rysnc在windows平台下也有相應版本。首頁地址為:http://rsync.samba.org/
rysnc 命令用法:(OPTION-參數,USER-使用者,HOST-IP地址,SRC-複製源位置,DEST-複製目標位置)
Shell拉:rsync [OPTION] [USER@]HOST:SRC [DEST]
rsync拉:rsync [OPTION] [USER@]HOST::[MODULE] [DEST]
Shell推:rsync [OPTION] SRC [USER@]HOST:DEST
rsync推:rsync [OPTION] SRC [USER@]HOST::DEST
rsync 命令常用參數
-a 遞迴方式傳輸檔案,並保持檔案屬性,等價-rlptgoD不包含-H
-r 子目錄以遞迴模式處理
-l 保持符號連結檔案
-H 保持永久連結檔案
-p 保持檔案許可權
-t 保持檔案時間資訊
-g 保持檔案歸屬組資訊
-o 保持檔案歸屬使用者資訊
-D 保持裝置檔案和特殊檔案
-z 在傳輸檔案時進行壓縮處理
--exclude=PATTERN 指定排除一個不需要傳輸檔案匹配模式
--exclude-from=FILE 從FILE中讀取排除規則
--include=PATTERN 指定需要傳輸的檔案匹配模式
--include-from=FILE 從FILE中讀取匹配規則
--copy-unsafe-links 複製指向複製源路徑目錄以外的連結檔案
--safe-links 忽略指向複製源路徑目錄以外的連結檔案(預設)
--existing 僅更新那些已經存在於接收端的檔案,而不複製新建立檔案
--ignore-existing 忽略那些已經存在於接收端的檔案,只複製新建立檔案
-b 當有變化時,對目標目錄中的舊檔案進行備份
--backup-dir=DIR 與-b結合使用,指定備份路徑
--link-dest=DIR 當檔案未改變時在指定路徑建立永久連結檔案
--delete 刪除接收端還存在而儲存端不存在的檔案
--delete-before 接收端在傳輸之前進行刪除操作(預設)
--delete-during 接收端在傳輸過程中進行刪除操作
--delete-after 接收端在傳輸之後進行刪除操作
--delete-excluded 接收端在傳輸同時進行刪除操作
--e,--rsh=COMMAND 指定代替rsh的shell程式
--ignore-erros 即使出現I/O錯誤也要進行刪除
--partial 保留因故沒有完全傳輸的檔案,以加快隨後的再次傳輸
--progress 在傳輸時顯示傳輸過程
-p 等價於—partial—progress
--delay-updates 將正在更新的檔案先儲存到.~tmp~臨時目錄,待傳輸完畢再更新目標檔案
-v,--verbose 詳細輸出模式
-q,--quiet 精簡輸出模式
-h,--human-readable 輸出檔案大小
-n,--dry-run 顯示那些檔案將要被傳輸
--list-only 僅列出檔案而不進行複製
--rsync-path=PROGRAM 指定遠程伺服器上的rsync命令所在路徑
--password-file=FILE 指定從FILE中讀取口令,避免在終端中輸入口令
-4,-6 使用IPv4或者IPv6
--version 列印版本資訊
--help 顯示幫組資訊
注意:若用普通使用者身份運行rsync命令,同步後的檔案的屬主將改變為這個普通使用者身份;若用超級使用者身份運行rsync命令同步後檔案屬性保持原來使用者身份不變。若指定-tg但目標電腦沒有指定使用者和組,則複製的檔案歸入501使用者 501組
rsync 服務
啟動RSYNC: #vi /etc/xinetd.d/rsync 把disable = YES改成NO
service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
rsync 配置
rsync伺服器可以獨立運行也可以由xinetd運行,CentOS預設以xinetd運行,同時預設監聽873連接埠。需要建立rsync設定檔 vi /etc/rsyncd.conf
在檔案中[module]之外的所有配置行都是全域參數,也可以在全域參數部分定義模組參數,模組參數主要功能定義哪個目錄要被同步,可以根據需要來定義多個模組
secrets file = /etc/rsyncd.secrets
read only = yes
list=yes
uid = nobody
gid = nobody
max connections = 10
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[MODULE] --可以用別名,可以建立多個單元
comment = tranlate nginx from 151
path = /usr/local/www/supe/
auth users = root
uid = root
gid = root
secrets file = /etc/rsyncd.secrets
read only = no
全域參數
address 指定的伺服器啟動並執行IP地址。由xinetd運行時將忽略此參數
port 指定rsync守護進程監聽連接埠號碼(預設873)。由xinetd運行時將忽略此參數
motd file 指定一個訊息檔案,當客戶串連伺服器時該檔案內容將顯示給客戶
pid file rsync的守護進程將其PID寫入指定的檔案
log file 指定守護進程的記錄檔,而不將日誌發給syslog
syslog facility 指定發送日誌訊息給syslog時的訊息層級
socket options 自訂tcp選項
基本模組參數
path 指定當前模組在rsync伺服器上的同步路徑,必須指定
comment 給模組指定一個描述
控制模組參數
use 預設為true,傳輸檔案之前先chroot到path參數所指定的目錄下,這樣做實現額外的安全防護,但缺點需要root許可權,並且不能備份指向path外部的符號連結所指向的目錄檔案
uid 制定該模組已指定的UID傳輸檔案
gid 指定該模組已指定的GID檔案
max connections 限制最大串連並發數以保護伺服器,超過限制則提示稍後操作
lock file 指定支援max connections參數的鎖檔案,預設/etc/run/rsyncd.lock
list 指定當客戶請求列出可以使用的模組列表時(預設ture),該模組是否被列出。如果false,可以建立隱藏的模組
read only 是否也許客戶上傳檔案,預設ture則不也許上傳。為false並且伺服器目錄具有讀寫權限則允許上傳
write only 是否也許客戶上傳檔案,預設ture則不也許下載。為false並且伺服器目錄具有讀寫權限則允許下載
ignore errors 指定rsync伺服器在運行delete操作時是否忽略I/O錯誤
ignore nonreadable 指定rysnc伺服器忽略那些沒有訪問檔案許可權的使用者
timeout 設定連線逾時時間,單位為秒
dont compress 告訴rysnc那些檔案在傳輸前不用壓縮,預設已設定壓縮包不再進行壓縮
refuse options 定義一些不允許客戶對該模組使用的命令選項列表
檔案篩選模組參數
exclude 指定排除的多個檔案或目錄,由空格隔開
exclude from 從指定檔案中讀取排除規則
include 指定包含複製多個檔案或者目錄,由空格隔開
include from 從指定檔案中讀取包含規則
使用者認證模組參數
auth users 指定使用者才允許串連該模組
secrets file 指定一個口令認證檔案
strict modes 指定是否檢測口令檔案許可權。rsync認證口令檔案許可權一定是600
存取控制參數
hosts allow 指定哪些IP可以訪問該模組
hosts deny 指定哪些IP不可以訪問該模組
設定隨系統啟動rsync
#chkconfig rsync on