Linux和Windows文件實(shí)時(shí)同步

admin Linux運(yùn)維評(píng)論1,1252字?jǐn)?shù) 6633閱讀模式
摘要

實(shí)現(xiàn)文件同步是借助Linux上面的鏡像備份工具rsync,支持本地復(fù)制、SSH、rsync主機(jī)同步。該工具在windows平臺(tái)上也有對(duì)應(yīng)的實(shí)現(xiàn)cwRsyncServer。本文介紹的是實(shí)時(shí)監(jiān)控Linux服務(wù)器上面的文件,并同步到windows客戶端。
ps:此類的文章在網(wǎng)上已經(jīng)有大把了,很多都是復(fù)制粘貼(我也不例外,但是我會(huì)詳細(xì)的講解細(xì)節(jié)。),初學(xué)者可能不容易看懂。也是為了以后自己能夠再次使用(因?yàn)橹皇枪ぞ?,你不記錄下?lái),以后就忘記了?。?/p>

rsync介紹

rsync是一個(gè)開源的提供快速增量文件傳輸?shù)膶?shí)用程序。rsyns目前由Wayne Davison維護(hù)。rsync官網(wǎng)地址。
官網(wǎng)上面主要有兩個(gè)文檔需要看,一個(gè)是rsync使用文檔,另一個(gè)是rsync.conf配置文檔參數(shù)。

步驟一:

先在Linux上面安裝rsync,一般的Linux發(fā)行版上面都會(huì)帶這個(gè)工具。所以可以先看看服務(wù)器上面是否安裝了rsync。
輸入命令:rpm -qa | grep rsync
如果沒(méi)有安裝,這個(gè)就自行百度一下,rsync的配置文件在/etc/srync.conf
下面是配置文件內(nèi)容:文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/6737.html

  1. # /etc/rsyncd: configuration file for rsync daemon mode  
  2.  
  3. # See rsyncd.conf man page for more options.  
  4.  
  5. # configuration example:  
  6.  
  7. # uid = nobody  
  8. # gid = nobody  
  9. # use chroot = yes  
  10. # max connections = 4  
  11. # pid file = /var/run/rsyncd.pid  
  12. # exclude = lost+found/  
  13. # transfer logging = yes  
  14. # timeout = 900  
  15. # ignore nonreadable = yes  
  16. # dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2  
  17.  
  18. # [ftp]  
  19. #        path = /home/ftp  
  20. #        comment = ftp export area  

因?yàn)橹饕騑indows推送文件,所以不需要更改這里面的配置。文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/6737.html

步驟二:

在windows下面安裝rsync,windows下面有個(gè)rsync的實(shí)現(xiàn)叫做cwRsyncServer,官網(wǎng)地址,這個(gè)軟件在4.1.0以前的版本是免費(fèi)的。之后就是收費(fèi)了的。這里貼心提供4.1.0的下載地址
下載之后,自己選好安裝路徑,注意!在安裝的時(shí)候,他會(huì)生成一個(gè)賬號(hào),這個(gè)賬號(hào)是用來(lái)啟動(dòng)它的一個(gè)服務(wù)的(ps:相當(dāng)于Linux下面的daemon)。不過(guò)個(gè)人覺(jué)得這個(gè)賬戶要不要無(wú)所謂。文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/6737.html

因?yàn)槭荓inux上面向windows上面推送文件,所以在這里需要配置windows安裝的cwRsyncServer的配置文件,并啟動(dòng)服務(wù)。文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/6737.html

找到cwRsyncServer的安裝目錄ICW,打開里面的配置文件rsyncd.conf,并添加以下內(nèi)容。文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/6737.html

  1. port = 873 #服務(wù)端口  
  2. use chroot = false  
  3. strict modes = false  
  4. hosts allow = *  
  5. log file = rsyncd.log  
  6. uid = 0  
  7. gid = 0  
  8.  
  9. # Module definitions  
  10. # Remember cygwin naming conventions : c:\work becomes /cygwin/c/work  
  11. #  
  12. [test]  
  13. path = /cygdrive/d/work #同步的路徑  
  14. read only = false  
  15. transfer logging = yes  
  16. auth users = ruser # 允許連接服務(wù)器的用戶名  
  17. secrets file = rsyncd.secrets #用戶密碼  

rsyncd.secrets是創(chuàng)建的一個(gè)保存密碼的文件,這里是放在和rsync.conf同級(jí)目錄。文件內(nèi)容如下:文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/6737.html

  1. ruser:123456  

上面其實(shí)就是rsync的配置文件。在官網(wǎng)配置文檔里面有詳細(xì)的介紹。上面有#號(hào)的是我添加的。有些是默認(rèn)的。文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/6737.html

設(shè)置好之后就啟動(dòng)RsyncServer服務(wù)。文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/6737.html

步驟三:

  1. SYNOPSIS  
  2. Local:  rsync [OPTION...] SRC... [DEST]  
  3.   
  4. Access via remote shell:  
  5.   Pull: rsync [OPTION...] [USER@]HOST:SRC... [DEST]  
  6.   Push: rsync [OPTION...] SRC... [USER@]HOST:DEST  
  7.   
  8. Access via rsync daemon:  
  9.   Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]  
  10.         rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]  
  11.   Push: rsync [OPTION...] SRC... [USER@]HOST::DEST  
  12.         rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST  
  13. Usages with just one SRC arg and no DEST arg will list the source files instead of copying.  

以上是rsync的使用語(yǔ)法,接下來(lái)就測(cè)試一下Linux服務(wù)器是否能夠往windows上面推送數(shù)據(jù)。(ps:這個(gè)用法能夠在上面的rsync的使用文檔里面找到)文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/6737.html

  1. rsync -avz /home/ftp ruser@192.168.1.108::test  

上面test是你定義的模塊,/home/ftp這個(gè)是你要推送的源文件地址。
因?yàn)樵趙indows rsync那里定義了用戶,所以接下來(lái)會(huì)要求你輸入密碼。填之前設(shè)置123456就可以了。文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/6737.html

步驟四:
如果之前推送文件成功了,那我們就可以進(jìn)行接下來(lái)的操作了。之前都是手動(dòng)去同步的,但是我們想要自動(dòng)去同步,那該怎么做呢?
這里有一個(gè)工具Sersync。它主要就是監(jiān)聽文件夾,當(dāng)文件夾發(fā)生更改的時(shí)候推送文件到遠(yuǎn)程。
Sersync下載地址文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/6737.html

Sersync官網(wǎng)
Sersync作者把資源放在谷歌上面的,所以我這里給一個(gè)下載地址。
下載下來(lái)后,進(jìn)行以下操作:文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/6737.html

  1. wget http://www.pipizhufangpi.cn/resources/sersync2.5.4_64bit_binary_stable_final.tar.gz  
  2. tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz  #解壓Sersync壓縮文件  
  3. mv GNU-Linux-x86/ /usr/local/sersync   #將解壓后的文件移動(dòng)到/usr/local/sersync目錄下  
  4. cd /usr/local/sersync/  #移動(dòng)到目錄 /usr/local/sersync/  
  5. cp confxml.xml confxml.xml_bak #備份配置文件  

然后就需要對(duì)這個(gè)confxml.xml配置文件進(jìn)行配置了,該配置文件,配置監(jiān)聽的目錄、錯(cuò)誤產(chǎn)生的日志、同步的地址賬號(hào)和密碼等等。
需要改的只有幾個(gè)地方,修改如下:
修改本地監(jiān)控文件、修改遠(yuǎn)程同步模塊文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/6737.html

  1. <localpath watch="/home/ftp"> <!-- 本地監(jiān)聽文件地址 -->  
  2.     <remote ip="192.168.1.108" name="test"/> <!-- 遠(yuǎn)程地址和同步的模塊 -->  
  3.     <!--<remote ip="192.168.8.39" name="tongbu"/>-->  
  4.     <!--<remote ip="192.168.8.40" name="tongbu"/>-->  
  5. </localpath>  

設(shè)置遠(yuǎn)程模塊賬號(hào)和密碼文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/6737.html

  1. <rsync>  
  2. <commonParams params="-artuz"/> <!-- 之前rsync的OPTIONS -->  
  3. <auth start="true" users="ruser" passwordfile="/etc/rsync/rsync.passwd"/> <!-- 設(shè)置賬號(hào)和密碼 -->  
  4. <userDefinedPort start="false" port="874"/><!-- port=874 -->  
  5. <timeout start="true" time="100"/><!-- timeout=100 -->  
  6. <ssh start="false"/>  
  7. </rsync>  
  1. <failLog path="/usr/local/sersync/logs/rsync_fail_log.sh" timeToExecute="60"/><!-- 設(shè)置錯(cuò)誤日志 -->  

在上面我們?cè)O(shè)置了遠(yuǎn)程模塊的賬號(hào)和密碼,這個(gè)是對(duì)應(yīng)windows上面設(shè)置的test模塊賬號(hào)和密碼。在這里要設(shè)置該密碼文件,還要設(shè)置出錯(cuò)日志。
代碼如下:文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/6737.html

  1. mkdir /etc/rsync #創(chuàng)建文件夾  
  2. echo "123456" > /etc/rsync/rsync.passwd  
  3. chmod 600 /etc/rsync/rsync.passwd #設(shè)置只有當(dāng)前用戶具有讀寫權(quán)限,不設(shè)置會(huì)報(bào)錯(cuò)  
  4. mkdir /usr/local/sersync/logs #創(chuàng)建日志文件  
  5. touch /usr/local/sersync/logs/rsync_fail_log.sh #創(chuàng)建日志文件  

步驟五:

完成以上步驟后,就可以開啟Sersync了。
代碼如下:文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/6737.html

  1. /usr/local/sersync/sersync2 -d -r -o /usr/local/sersync/confxml.xml  
  2. echo "PATH=$PATH:/usr/local/sersync/" >> /etc/profile  
  3. source /etc/profile  

配置更多實(shí)例只需要對(duì)應(yīng)不同配置文件即可文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/6737.html

  1. /usr/local/sersync/sersync2  -d -o /usr/local/sersync/www_confxml.xml  
  2. /usr/local/sersync/sersync2  -d -o /usr/local/sersync/bbs_confxml.xml  
  3. /usr/local/sersync/sersync2  -d -o /usr/local/sersync/blog_confxml.xml   

如果你想停止Sersync,可以通過(guò)殺死進(jìn)程的方式來(lái)終止:文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/6737.html

  1. ps  -ef |grep  rsync   
  2. pkill  sersync   

更多:

傳輸參數(shù)參考如下:文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/6737.html

  1. -v, --verbose 詳細(xì)模式輸出  
  2. -q, --quiet 精簡(jiǎn)輸出模式  
  3. -c, --checksum 打開校驗(yàn)開關(guān),強(qiáng)制對(duì)文件傳輸進(jìn)行校驗(yàn)  
  4. -a, --archive 歸檔模式,表示以遞歸方式傳輸文件,并保持所有文件屬性,等于-rlptgoD  
  5. -r, --recursive 對(duì)子目錄以遞歸模式處理  
  6. -R, --relative 使用相對(duì)路徑信息  
  7. -b, --backup 創(chuàng)建備份,也就是對(duì)于目的已經(jīng)存在有同樣的文件名時(shí),將老的文件重新命名為~filename。可以使用--suffix選項(xiàng)來(lái)指定不同的備份文件前綴。  
  8. --backup-dir 將備份文件(如~filename)存放在在目錄下。  
  9. -suffix=SUFFIX 定義備份文件前綴  
  10. -u, --update 僅僅進(jìn)行更新,也就是跳過(guò)所有已經(jīng)存在于DST,并且文件時(shí)間晚于要備份的文件。(不覆蓋更新的文件)  
  11. -l, --links 保留軟鏈結(jié)  
  12. -L, --copy-links 想對(duì)待常規(guī)文件一樣處理軟鏈結(jié)  
  13. --copy-unsafe-links 僅僅拷貝指向SRC路徑目錄樹以外的鏈結(jié)  
  14. --safe-links 忽略指向SRC路徑目錄樹以外的鏈結(jié)  
  15. -H, --hard-links 保留硬鏈結(jié)  
  16. -p, --perms 保持文件權(quán)限  
  17. -o, --owner 保持文件屬主信息  
  18. -g, --group 保持文件屬組信息  
  19. -D, --devices 保持設(shè)備文件信息  
  20. -t, --times 保持文件時(shí)間信息  
  21. -S, --sparse 對(duì)稀疏文件進(jìn)行特殊處理以節(jié)省DST的空間  
  22. -n, --dry-run現(xiàn)實(shí)哪些文件將被傳輸  
  23. -W, --whole-file 拷貝文件,不進(jìn)行增量檢測(cè)  
  24. -x, --one-file-system 不要跨越文件系統(tǒng)邊界  
  25. -B, --block-size=SIZE 檢驗(yàn)算法使用的塊尺寸,默認(rèn)是700字節(jié)  
  26. -e, --rsh=COMMAND 指定使用rsh、ssh方式進(jìn)行數(shù)據(jù)同步  
  27. --rsync-path=PATH 指定遠(yuǎn)程服務(wù)器上的rsync命令所在路徑信息  
  28. -C, --cvs-exclude 使用和CVS一樣的方法自動(dòng)忽略文件,用來(lái)排除那些不希望傳輸?shù)奈募?nbsp; 
  29. --existing 僅僅更新那些已經(jīng)存在于DST的文件,而不備份那些新創(chuàng)建的文件  
  30. --delete 刪除那些DST中SRC沒(méi)有的文件  
  31. --delete-excluded 同樣刪除接收端那些被該選項(xiàng)指定排除的文件  
  32. --delete-after 傳輸結(jié)束以后再刪除  
  33. --ignore-errors 及時(shí)出現(xiàn)IO錯(cuò)誤也進(jìn)行刪除  
  34. --max-delete=NUM 最多刪除NUM個(gè)文件  
  35. --partial 保留那些因故沒(méi)有完全傳輸?shù)奈募?,以是加快隨后的再次傳輸  
  36. --force 強(qiáng)制刪除目錄,即使不為空  
  37. --numeric-ids 不將數(shù)字的用戶和組ID匹配為用戶名和組名  
  38. --timeout=TIME IP超時(shí)時(shí)間,單位為秒  
  39. -I, --ignore-times 不跳過(guò)那些有同樣的時(shí)間和長(zhǎng)度的文件  
  40. --size-only 當(dāng)決定是否要備份文件時(shí),僅僅察看文件大小而不考慮文件時(shí)間  
  41. --modify-window=NUM 決定文件是否時(shí)間相同時(shí)使用的時(shí)間戳窗口,默認(rèn)為0  
  42. -T --temp-dir=DIR 在DIR中創(chuàng)建臨時(shí)文件  
  43. --compare-dest=DIR 同樣比較DIR中的文件來(lái)決定是否需要備份  
  44. -P 等同于 --partial  
  45. --progress 顯示備份過(guò)程  
  46. -z, --compress 對(duì)備份的文件在傳輸時(shí)進(jìn)行壓縮處理  
  47. --exclude=PATTERN 指定排除不需要傳輸?shù)奈募J?nbsp; 
  48. --include=PATTERN 指定不排除而需要傳輸?shù)奈募J?nbsp; 
  49. --exclude-from=FILE 排除FILE中指定模式的文件  
  50. --include-from=FILE 不排除FILE指定模式匹配的文件  
  51. --version 打印版本信息  
  52. --address 綁定到特定的地址  
  53. --config=FILE 指定其他的配置文件,不使用默認(rèn)的rsyncd.conf文件  
  54. --port=PORT 指定其他的rsync服務(wù)端口  
  55. --blocking-io 對(duì)遠(yuǎn)程shell使用阻塞IO  
  56. -stats 給出某些文件的傳輸狀態(tài)  
  57. --progress 在傳輸時(shí)現(xiàn)實(shí)傳輸過(guò)程  
  58. --log-format=formAT 指定日志文件格式  
  59. --password-file=FILE 從FILE中得到密碼  
  60. --bwlimit=KBPS 限制I/O帶寬,KBytes per second  
  61. -h, --help 顯示幫助信息  

通過(guò)觀察失敗日志,我們可以發(fā)現(xiàn),Sersync所做的就是監(jiān)控文件夾變化,并定位到那個(gè)目錄,然后同步。
部分日志如下文章源自網(wǎng)吧系統(tǒng)維護(hù)-http://www.strong-digital.cn/6737.html

  1. #errno 1280  
  2. cd /home/ftp && rsync -artuz -R  --timeout=100 --delete ./   --include="文件驗(yàn)證.txt" --exclude=*  ruser@192.168.1.108::test --password-file=/etc/rsync/rsync.passwd >/dev/null 2>&1  
版權(quán)聲明:文章圖片資源來(lái)源于網(wǎng)絡(luò),如有侵權(quán),請(qǐng)留言刪除!!!
廣告也精彩
admin
  • 本文由 發(fā)表于 2020年11月5日 16:23:08
  • 轉(zhuǎn)載請(qǐng)務(wù)必保留本文鏈接:http://www.strong-digital.cn/6737.html
匿名

發(fā)表評(píng)論

匿名網(wǎng)友 填寫信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: