Linux與Windows檔案同步

本次採用的同步方式是rsync,Rsync是一款免費且強大的同步軟體,可以映象儲存整個目錄樹和檔案系統,同時保持原來檔案的許可權、時間、軟硬連結。第一次同步時會複製全部內容,下次只傳輸修改過的檔案部分。傳輸資料過程中可以實行壓縮及解壓縮操作,減少頻寬流量。支援scp、ssh及直接socket等方式連線,支援匿名傳輸。支援Linux,Window全平臺。下面我將我的部署步驟與一些相關設定記錄一下,網上也有很多差不多的步驟,主要是一些配置沒有講明白與清楚,所我特記錄一下。

一 、 Windows服務端部署

  1. 下載安裝包

    因為Windows服務端最新版本的已經收費了,所以我們採用4.1版本,這裡的安裝包是由Bulut0907提供,點這裡下載

    下載完解壓哦

  2. 安裝

    • 雙擊cwRsyncServer_4.1.0_Installer.exe進行安裝
    • 選擇安裝路徑
    • 設定賬號密碼(使用者名稱與密碼要記住,後面會有用。如果安裝的電腦有登入密碼,則必須為登入密碼)


      image-20210809150940174
    • Install安裝
  3. 配置

    • 找到你剛安裝路徑中的rsyncd.conf,修改相對應的配置,配置如下

      use chroot = false
      strict modes = false
      hosts allow = *
      log file = rsyncd.log
      # Module definitions
      # Remember cygwin naming conventions : c:\work becomes /cygwin/c/work
      #
      # 配置模組,這個模組名在同步的時候會用到
      [test]
      # 配置同步的儲存路徑,這裡的路徑需要注意一下,比如我的路徑其實是我的D盤下的file目錄下的share資料夾。謹記謹記謹記,我就卡在這上面卡了好久。
      path = /cygdrive/d/file/share
      # 忽略一些io錯誤
      ignore errors
      # 用於設定是否允許上載。預設false,代表允許上載。
      read only = no
      #允許連線的ip段或個別ip,預設任何人都可以連線
      #hosts allow = *
      # 指定的使用者,這裡的使用者在Windows中就是你剛剛安裝的時候建立的使用者名稱
      auth users = rsync
      #指定使用者名稱和密碼檔案 格式: 使用者名稱:密碼,這裡的賬號與密碼就是你安裝時設定的賬號密碼,這裡的路徑格式與上面一同,謹記
      secrets file = /cygdrive/d/1/rsyncd.password
      #設定進行資料傳輸時所使用的帳戶名或ID號,預設使用nobody
      uid = 0
      #設定進行資料傳輸時所使用的組名或GID號,預設使用nobody
      gid = 0
      # 上面都ID值都設定成0,不然的話在傳輸的時候會有報錯 @ERROR: invalid uid nobody
    • 建立rsyncd.password檔案,注意路徑,例如我的路徑是在 D:\1下,那麼你就在這目錄下建立


      image-20210809153250909
    • 密碼檔案授權

      C:\Program Files (x86)\ICW> .\bin\chmod.exe 600 /cygdrive/d/1/rsyncd.password

      image-20210809153625069
    • 檔案儲存資料夾授權


      image-20210809153844920
  4. 啟動服務,win+r 輸入 services.msc ,如下圖操作


image-20210809154246550

二 、Linux端客戶端部署

因之前有相關詳細的部署步驟,所就不再重複描述了。

lsyncd+rsync同步方案

inotify+rsync同步方案

三、 遇到的一些問題

  • 同步的時候提示無目錄

    Windows目錄需注意,看下是不是配錯了

  • 提示無許可權

    檢視Windows那個目錄是否授權

    哦對了,還有一個問題:使用lsyncd方案的時候Linux無法與加域的Windows同步,傳輸不過去,也無任何報錯,但改為非加域的機器就可同步了,有沒有大神解答一下,線上求!!!