Linux ubuntu16.04+windows10 rsync同步數據 ...
rsync同步數據
-環境:Linux (ubuntu16.04) + windows10
Linux:
安裝
sudo apt-get install rsync
rsync --version 查看是否已安裝, 並查看版本- 配置
主要三個配置文件. 預設不存在(/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.
++++++++++++++++++++++++++++++++++++++
- 啟動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:盤
安裝cwRsync windows客戶端
配置環境變數 cwRsync/bin --> path
在cwRsync目錄下建 密碼文件 rsyncd.pwd (保證文件只有所有者可讀寫600許可權)
內容: 只寫密碼即可
測試拉取伺服器數據到本地(前提 步驟1需要配置 在終端任何目錄方可運行):
rsync --port=8873 -avzP [email protected]::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參考