Linux運維: Rsync同步數據(ubuntu16.04+windows10)


rsync同步數據

-環境:Linux (ubuntu16.04) + windows10

Linux:

  1. 安裝
    sudo apt-get install rsync
    rsync --version 查看是否已安裝, 並查看版本

  2. 配置
    主要三個配置文件. 默認不存在(/etc/..)
    ① rsyncd.conf
    ② rsyncd.secrets
    ③ rsyncd.motd (rsync服務器信息)

  • 2.1 創建配置文件
  cd /etc
  mkdir rsyncd
  vi rsyncd.conf
rsyncd.conf內容如下:
    #告訴進程寫到 /var/run/rsyncd.pid 文件中
    pid file = /var/run/rsyncd.pid
    lock file =/var/run/rsyncd.lock

    #日志文件
    log file =/var/log/rsyncd.log
    log format = %t %a %m %f %b
    syslog facility = local3

    #服務器響應消息文件
    motd file = /etc/rsyncd/rsyncd.motd

    #指定運行端口,默認是873
    port = 8877

    #指定服務器IP地址 可不寫默認本地
    address = 192.168.56.102

    #服務器端傳輸文件時,要發哪個用戶和用戶組來執行,默認是nobody
    uid = root
    gid = root

    #如果"use chroot"指定為yes,那么rsync在傳輸文件以前首先chroot到path參數所指定的目錄下。這樣做的原因是實現額外的安全防護,但是缺點是需要以root權限,並且不能備份指向外部的符號連接所指向的目錄文件。默認情況下chroot值為yes
    use chroot = no

    #客戶端最多連接數
    max connections = 5
    exclude = lost+found/
    transfer logging = yes
    timeout = 900
    ignore nonreadable = yes
    dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

    #要同步的模塊(可寫多個,並設置不同用戶)
    [test_data]
    #指定文件目錄所在路徑
    path =  /home/test

    #list 意思是把rsync 服務器上提供同步數據的目錄在服務器上模塊是否顯示列出來。默認是yes 。如果你不想列出來,就no ;如果是no是比較安全的,至少別人不知道你的服務器上提供了哪些目錄。你自己知道就行了
    list=no

    #指定在 rsync 服務器上運行 delete 操作時是否忽略 I/O 錯誤。一般來說 rsync 在出現 I/O 錯誤時將將跳過 –delete 操作,以防止因為暫時的資源不足或其它 I/O 錯誤導致的嚴重問題。
    ignore errors

    #如果為yes,表示只讀本地文件就無法同步到服務器
    read only = no

    #允許連接的ip,在演示中使用的雲服務器就直接寫*,表示無限制 如果要規定ip或者ip段(10.1.4.0/255.255.255.0)需要進行其他配置
    hosts allow=10.1.4.0/255.255.255.0
    #hosts deny=*

    #auth users 是必須在服務器上存在的真實的系統用戶,如果你想用多個用戶,那就以,號隔開
    auth users = root

    #密碼存在rsyncd.passwd文件里
    secrets file = /etc/rsyncd/rsyncd.secrets
  • 2.2 配置rsyncd.secrets文件
    文件內容 username:password
    文件必須設置為只有所有者可讀寫權限 600
    chmod 600 ./rsyncd.secrets
    如果所屬用戶不是root 用chown修改
    chown -R root ./rsyncd.secrets

  • 2.3 rsyncd.motd
    內容如下: 連接成功信息提示

  ++++++++++++++++++++++++++++++++++++++
    welcome to rsync. 
  ++++++++++++++++++++++++++++++++++++++
  1. 啟動rsync服務器
  • 3.1 開啟寬口 並設置防火牆通道tcp允許
    iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 8873 -j ACCEPT

  • 3.2 啟動服務器
    rsync --daemon --config=/etc/rsyncd/rsyncd.conf

  • 3.3 檢查是否啟動
    ps -aux | grep rsync

    檢查是否啟動端口監聽:
    netstat -anp | grep rsync


windows

windows客戶端下載 提取碼:fg6h

注意: 密碼文件目錄, 本地目錄要用POSIX風格的寫法:
/cygdrive/f/cwRsync/rsyncd.pwd f表示F:盤

  1. 安裝cwRsync windows客戶端

配置環境變量 cwRsync/bin --> path

  1. 在cwRsync目錄下建 密碼文件 rsyncd.pwd (保證文件只有所有者可讀寫600權限)

內容: 只寫密碼即可

測試拉取服務器數據到本地(前提 步驟1需要配置 在終端任何目錄方可運行):

rsync --port=8873 -avzP root@192.168.56.102::test_data /cygdrive/d/data --password-file=/cygdrive/f/cwRsync/rsyncd.pwd

排錯

① ERROR: password file must not be other-accessible
服務器跟客戶端兩邊的密碼文件都必須是 600 權限
windows10: 修改文件權限為可讀寫, 所屬用戶只有當前登錄用戶
查看當前用戶(推薦使用cmder終端):

λ whoami
desktop-2018whj\lenovo

λ echo %username%
Lenovo
# 使用cwRsync提供的工具
chomd.exe -c 600 /cygdrive/f/cwRsync_15110/rsync.pwd
chown.exe Lenovo /cygdrive/cwRsync_15110/rsync.pwd

其他事項

如果文件權限不可修改(windows10), 使用一下方法解決
通過文件右鍵查看屬性--> 安全 --> 查看用戶權限

  • 目錄右鍵>屬性>安全
    • 點擊>高級> 禁用繼承==>將以繼承的權限 轉換為此對象的顯式權限
  • 目錄右鍵>屬性>安全
    • 點擊==>編輯
    • 刪除所有組或用戶名下面的信息
    • 點擊>添加>高級>立即查找>選中需要使用的用戶(一般為當前用戶)==>雙擊或者選中后確定
    • 將選中的用戶勾選 讀寫 權限
    • 一路確定

參考資料:
windows chomod 600
Rsync數據同步工具
mac Rsync參考


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM