學習參考連接
以下是我在學習過程中借鑒的經驗和下載資源鏈接,感謝幾位大佬的幫助,也供各位參考。
Rsync踩坑:
https://blog.csdn.net/XiaoXiaoYunXing/article/details/120160395
Sersync下載源
http://down.whsir.com/downloads/sersync2.5.4_64bit_binary_stable_final.tar.gz
Rsync+Sersync部署配置
https://zhuanlan.zhihu.com/p/489165901
Sersync和Rsync部署
Rsync可以遠程同步,支持本地復制,實時同步需要借助第三方工具sersync/inotify
Sersync可以記錄下被監聽目錄中發生變化的(包括增加、刪除、修改)具體某一個文件或者某一個目錄的名字,然后使用rsync同步的時候
Inotify只能記錄下被監聽的目錄發生了變化(增,刪,改)并沒有把具體是哪個文件或者哪個目錄發生了變化記錄下來
1、Rsync服務安裝
在master和minion上先安裝Rsync服務
執行命令 yum?install –y rsync
2、配置rsyncd.conf
vim /etc/rsyncd.conf
uid =?root
gid =?root
use chroot =?no
max connections =?36000
timeout =?600
pid file =/var/run/rsyncd.pid
lock file =/var/run/rsync.lock
log file =?/var/log/rsyncd.log
ignore errors =?no
read only =?no
list =?no
hosts allow =?192.168.183.135
hosts deny =?*
auth users =?root
secrets file =/etc/rsync.password
[backup]
path =?/backup/sersync/
# 配置注解:
# uid:指定傳輸文件時的用戶
# gid:指定傳輸文件時的組
# use chroot true|false:表示在傳輸文件前首先chroot到path參數所指定的目錄下,可以實現安全防護,但缺點是需要以root權限,并且不能備份指向外部的符號連接所指向的目錄文件,默認情況下chroot值為true
# max connections:指定最大的連接數,默認是0,即沒有限制
# read only ture|false:如果為true,則不能上傳到該模塊指定的路徑下
# list:表示當用戶查詢該服務器上的可用模塊時,該模塊是否被列出,true為列出,false為隱藏
# auth users:指定傳輸時要使用的用戶名
# secrets file:指定密碼文件,注意該密碼文件的權限一定要是600,格式:用戶名:密碼
# hosts allow:是允許同步的主機,非本機IP,可以是對方IP或者網段,如果是多個中間用空格隔開
# hosts deny:拒絕同步的主機,可以是IP或者網段,如果是多個中間用空格隔開
# [backup]:同步的模塊名
# path:同步的路徑
3、設置同步用戶和密碼
這里同步用的root用戶,沒有專門創建同步用戶
rsyncd.conf中secrets file配置選項中的rsync.password
secrets file =/etc/rsync.password
需要在etc下創建rsync.password,保存用戶和密碼
命令 ?echo "root:123456" >/etc/rsync.password
改變權限 Chmod?+600 /etc/rsync.password
4、創建同步目錄
即rsyncd.conf中path配置選項中的目錄
[backup]
path =?/backup/sersync/
執行命令 mkdir?–p /backup/sersync
啟動守護進程并寫入開機自啟動
rsync --daemon --config=/etc/rsyncd.conf
echo "rsync --daemon --config=/etc/rsyncd.conf" >>/etc/rc.local
chmod +x /etc/rc.d/rc.local
tail -1 /etc/rc.local
reboot
systemctl status rc-local.service
netstat -ntlp | grep rsync
5、測試rsync
創建臨時同步目錄 mkdir?–p /var/ftp/pub/sersync/
執行命令
rsync -avzP /var/ftp/pub/sersync/ root@192.168.183.134::backup --password-file=/etc/rsync.password
如果不確定 rsync 執行后會產生什么結果,可以先用-n或--dry-run參數模擬執行的結果
-n參數模擬命令執行的結果,并不真的執行命令。-v參數則是將結果輸出到終端
???????6、下載部署sersync
可用下載地址如下http://down.whsir.com/downloads/sersync2.5.4_64bit_binary_stable_final.tar.gz
mkdir /usr/local/sersync/
cd?/usr/local/sersync/ && mkdir bin conf logs
上傳上述下載的包到/usr/local/sersync/
tar –xvf sersync2.5.4_64bit_binary_stable_final.tar.gz
mv GNU-Linux-x86/sersync2 ./bin/sersync
mv GNU-Linux-x86/confxml.xml ?./conf/
???????7、配置config.xml
建議拷貝一份在修改?cp confxml.xml confxml.xml.bak
需要把監控的目錄數據同步到master指定的模塊下,前面寫了slave的模塊名是backup對應的目錄是:/backup/
# 如果系統linux7以上,需要將xfs="false"修改成xfs="true",否則sersync無法遞歸監控
<fileSystem xfs="true"/>
<localpath watch="/var/ftp/pub/sersync">
<remote ip="192.168.183.134" name="backup"/>
</localpath>
# 指定rsync的虛擬用戶和密碼文件路徑
<rsync>
<commonParams params="-artuz"/>
<auth start="true" users="root" passwordfile="/etc/rsync.password"/>
<userDefinedPort start="false" port="874"/><!-- port=874 -->
<timeout start="false" time="100"/><!-- timeout=100 -->
<ssh start="false"/>
</rsync>
echo "export PATH=$PATH:/usr/local/sersync/bin/" >>/etc/profile
source /etc/profile
which sersync
???????8、啟動sersync
sersync -d -r -o /usr/local/sersync/conf/confxml.xml
# 參數注解:
# -d:啟用守護進程模式
# -r:在監控前,將監控目錄與遠程主機用rsync命令推送一遍
# -o:指定配置文件,默認使用confxml.xml文件
???????9、文件同步測試
在 192.168.183.135上執行以下命令
cd /var/ftp/pub/sersync/
ll
在192.168.183.134上執行以下命令
cd?/backup/sersync
ll
在192.168.183.135上創建文件和目錄,命令如下
touch?{1..10} && mkdir test1 test2 test3
ll
到192.168.183.134:/backup/sersync目錄下查看同步結果
文件同步成功
???????10、加入開機啟動項,重啟服務器查看
ln -s ?/usr/local/sersync/bin/sersync /usr/local/bin/sersync
echo "sersync -d -r -o /usr/local/sersync/conf/confxml.xml" >>/etc/rc.local
chmod +x /etc/rc.d/rc.local
systemctl status rc-local.service
tail -1 /etc/rc.local
reboot
???????11、Rsync參數
-n參數模擬命令執行的結果,并不真的執行命令。-v參數則是將結果輸出到終端
--append參數指定文件接著上次中斷的地方,繼續傳輸。
--append-verify參數跟--append參數類似,但會對傳輸完成后的文件進行一次校驗。如果校驗失敗,將重新發送整個文件。
-b、--backup參數指定在刪除或更新目標目錄已經存在的文件時,將該文件更名后進行備份,默認行為是刪除。更名規則是添加由--suffix參數指定的文件后綴名,默認是~。
--backup-dir參數指定文件備份時存放的目錄,比如--backup-dir=/path/to/backups。
--bwlimit參數指定帶寬限制,默認單位是 KB/s,比如--bwlimit=100。
-c、--checksum參數改變rsync的校驗方式。默認情況下,rsync 只檢查文件的大小和最后修改日期是否發生變化,如果發生變化,就重新傳輸;使用這個參數以后,則通過判斷文件內容的校驗和,決定是否重新傳輸。
--delete參數刪除只存在于目標目錄、不存在于源目標的文件,即保證目標目錄是源目標的鏡像。
-e參數指定使用 SSH 協議傳輸數據。
--exclude參數指定排除不進行同步的文件,比如--exclude="*.iso"。
--exclude-from參數指定一個本地文件,里面是需要排除的文件模式,每個模式一行。
--existing、--ignore-non-existing參數表示不同步目標目錄中不存在的文件和目錄。
-h參數表示以人類可讀的格式輸出。
-h、--help參數返回幫助信息。
-i參數表示輸出源目錄與目標目錄之間文件差異的詳細情況。
--ignore-existing參數表示只要該文件在目標目錄中已經存在,就跳過去,不再同步這些文件。
--include參數指定同步時要包括的文件,一般與--exclude結合使用。
--link-dest參數指定增量備份的基準目錄。
-m參數指定不同步空目錄。
--max-size參數設置傳輸的最大文件的大小限制,比如不超過200KB(--max-size='200k')。
--min-size參數設置傳輸的最小文件的大小限制,比如不小于10KB(--min-size=10k)。
-n參數或--dry-run參數模擬將要執行的操作,而并不真的執行。配合-v參數使用,可以看到哪些內容會被同步過去。
-P參數是--progress和--partial這兩個參數的結合。
--partial參數允許恢復中斷的傳輸。不使用該參數時,rsync會刪除傳輸到一半被打斷的文件;使用該參數后,傳輸到一半的文件也會同步到目標目錄,下次同步時再恢復中斷的傳輸。一般需要與--append或--append-verify配合使用。
--partial-dir參數指定將傳輸到一半的文件保存到一個臨時目錄,比如--partial-dir=.rsync-partial。一般需要與--append或--append-verify配合使用。
--progress參數表示顯示進展。
-r參數表示遞歸,即包含子目錄。
--remove-source-files參數表示傳輸成功后,刪除發送方的文件。
--size-only參數表示只同步大小有變化的文件,不考慮文件修改時間的差異。
--suffix參數指定文件名備份時,對文件名添加的后綴,默認是~。
-u、--update參數表示同步時跳過目標目錄中修改時間更新的文件,即不同步這些有更新的時間戳的文件。
-v參數表示輸出細節。-vv表示輸出更詳細的信息,-vvv表示輸出最詳細的信息。
--version參數返回 rsync 的版本。