Rsync是一個快速的,功能至關強大的文件傳輸工具.它能夠經過LAN/WAN快速同步多臺主機之間的文件.它每次同步只同步兩個文件不一樣的部分,所以傳輸速度很快.而且備份文檔能保留源文檔的權限、屬主、屬組、時間等屬性.shell
rsync一共有6中命令格式安全
rsync [OPTION]... SRC DEST rsync [OPTION]... SRC [USER@]host:DEST rsync [OPTION]... [USER@]HOST:SRC DEST rsync [OPTION]... [USER@]HOST::SRC DEST rsync [OPTION]... SRC [USER@]HOST::DEST rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
對應於以上六種命令格式,rsync有六種不一樣的工做模式:
bash
rsync -avz /root/a/ /root/backup
rsync -avz /root/a/ root@192.168.10.10:/root/backup
rsync -avz root@192.168.10.10:/root/test/ /root/backup
rsync -avz root@192.168.10.10::mymodule /root/backup
rsync -avz /root/backup/ root@192.168.10.10::mymodule
rsync -avz rsync://192.168.10.10::mymodule
-t --times 保持文件時間信息,將源文件的modify time同步到目標文件 -I --ignore-times 不跳過那些有一樣的時間和長度的文件。 -v --verbose 詳細模式輸出。 -z --compress 對備份的文件先壓縮再傳輸 -r --recursive 對子目錄以遞歸模式處理。 -l --links 保留軟連接。 -p --perms 保持文件權限 -g --group 保持文件屬組信息。 -o --owner 保持文件屬主信息。 -P --partial 斷點續傳,保留那些因故沒有徹底傳輸的文件,以是加快隨後的再次傳輸 -D --devices 保持設備文件信息。 -a --archive 歸檔模式,表示以遞歸方式傳輸文件,並保持全部文件屬性,等於-rlptgoD --delete 刪除那些DST中SRC沒有的文件 --exclude=PATTERN 指定排除不須要傳輸的文件模式 --include=PATTERN 指定不排除而須要傳輸的文件模式 --exclude-from=FILE 排除FILE中指定模式的文件 --include-from=FILE 不排除FILE指定模式匹配的文件 --config=FILE 指定其餘的配置文件,不使用默認的rsyncd.conf文件 --port=PORT 指定其餘的rsync服務端口 --progress 在傳輸時顯示傳輸過程 --log-format=FORMAT 指定日誌文件格式 --password-file=FILE 從FILE中獲得密碼 -stats 給出某些文件的傳輸狀態
在/etc/rsyncd目錄下建立以下文件服務器
touch /etc/rsyncd/rsyncd.conf #主配置文件 touch /etc/rsyncd/rsyncd.passwd #用戶名密碼文件,一組用戶一行,用戶名和密碼使用 : 分割 touch /etc/rsyncd/rsyncd.motd #非必須,鏈接上rsyncd顯示的歡迎信息,此文件可不建立
必須注意的是,rsyncd服務的密碼文件權限必須是600ssh
chmod 600 /etc/rsyncd/rsyncd.secrets
編輯主配置文件 rsyncd.conf 工具
# 全局配置
# pid file 守護進程pid文件 # port 守護進程監聽端口 # address 守護進程監聽ip pid file = /usr/local/var/run/rsyncd.pid port = 873 address = 192.168.1.2 #rsyncd 守護進程運行系統用戶全局配置,也可在具體的塊中獨立配置, uid = root gid = root #容許 chroot,提高安全性,客戶端鏈接模塊,首先chroot到模塊path參數指定的目錄下 #chroot爲yes時必須使用root權限,且不能備份path路徑外的連接文件 use chroot = yes #只讀, 若是是yes的話,則不能從客戶端同步到服務器端 read only = no #容許訪問rsyncd服務的ip,ip端或者單獨ip之間使用空格隔開
hosts allow = 192.168.10.10/255.255.255.0 192.162.11.1 182.11.11.1/255.255.255.0 #不容許訪問rsyncd服務的ip,*是所有(不涵蓋在hosts allow中聲明的ip,注意和hosts allow的前後順序) hosts deny = * #客戶端最大鏈接數 max connections = 5 #歡迎文件路徑,可選的 motd file = /etc/rsyncd/rsyncd.motd
#日誌相關 # log file 指定rsync發送消息日誌文件,而不是發送給syslog,若是不填這個參數默認發送給syslog # transfer logging 是否記錄傳輸文件日誌 # timeout鏈接超時時間 log file = /usr/local/logs/rsyncd.log transfer logging = yes timeout = 300 # 模塊配置(可配置多個) #模塊 模塊名稱必須使用[]環繞,好比要訪問data1,則地址應該是root@192.168.10.10::mymodule [mymodule] #模塊根目錄,必須指定 path = /home/username #是否容許列出模塊裏的內容 list = yes #忽略錯誤 #ignore errors #模塊驗證用戶名稱,可以使用空格或者逗號隔開多個用戶名 auth users = mymoduleuser1 #模塊驗證密碼文件 可放在全局配置裏 secrets file = /etc/rsyncd/rsyncd.passwd #註釋 comment = some description about this moudle #排除目錄,多個之間使用空格隔開 exclude = test1/ test2/
配置密碼文件 rsyncd.passwdui
mymoduleuser1:abc123456
啓動rsync服務this
rsync --daemon --config=/etc/rsyncd.conf
客戶端的配置spa
咱們能夠在客戶端配置一份密碼文件, 裏面直接寫密碼就能夠日誌
好比說: mypwd.pwd
abc123456
而後就能夠運行一下命令來備份文件
rsync -avz --delete --progress --password-file=/home/root/rsync.pwd root@192.168.10.10::mymodule ~/backup
rsync 客戶端自動與服務器同步數據
首先須要新建定時任務
crontab -e
而後寫入
0 */1 * * * rsync -avz --delete --progress --password-file=/home/root/rsync.pwd root@192.168.10.10::mymodule ~/backup
就能夠實現每隔1小時自動備份