測試環境為 Ubuntu16.04 x64 虛擬機.
RSYNC 的指令使用請參考 https://benjr.tw/96928
rsync 指令不是也可遠端同步資料(使用 SSH 協定 protocol)嗎? 為什麼還需要使用 Rsync Daemon 呢!! 我想主要是可以做身份管理,遠端使用者不需輸入密碼(透過密碼檔管理),也可免掉遠端一定要輸入密碼的問題( rsync 需要輸入密碼無法寫入 cron table 做自動化排程).
RSYNC Daemon (Server IP : 172.16.15.130)
rsync daemon 預設使用 TCP 埠(port) 873.
範例檔位於 /usr/share/doc/rsync/examples/rsyncd.conf ,複製至 /etc/rsyncd.conf ,並修改內容,啟動 rsyncd 的服務.
root@ubuntu:~# cp /usr/share/doc/rsync/examples/rsyncd.conf /etc/ root@ubuntu:~# vi /etc/rsyncd.conf
預設的設定為
log file = /var/log/rsyncd.log reverse lookup = no [ftp] comment = public archive path = /var/www/pub use chroot = yes lock file = /var/lock/rsyncd read only = yes list = yes uid = nobody gid = nogroup timeout = 600 refuse options = checksum dry-run dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
root@ubuntu:~# mkdir -p /var/www/pub
- log file
指定 log 路徑 /var/log/rsyncd.log - reverse lookup
設定為 no 時就不需要做名稱解析.
- comment
名稱自訂. - path
設定檔案存放目錄. - use chroot
chroot 變更系統的根目錄,變更之後根目錄之外的檔案無法進行存取動作. - auth users
不是系統的使用者,而是 rsync 自訂的認證帳號 (需設定於 rsyncd.secrets) - lock file
- read only
設定是否為唯讀 - list
- uid
- gid
- timeout
- refuse options
- dont compress
不需要再做壓縮的附檔名.
自訂一個新的分享目錄
[ben] comment = Ben's folder path = /var/www/ben hosts allow = * use chroot = yes auth users = rben read only = no uid = root gid = root secrets file = /etc/rsyncd.secrets
root@ubuntu:~# mkdir -p /var/www/ben
- auth users = rben
這個使用者是使用 rsync 時需要輸入的使用者名稱,不同於 Linux 系統下的使用者. - secrets file
剛剛設定的使用者密碼就是儲存在 /etc/rsyncd.secrets 密碼檔, 設定格式為 帳號:密碼.root@ubuntu:~# vi /etc/rsyncd.secrets rben:1234
密碼檔權限與檔案擁有者需要做修改才能使用.
root@ubuntu:~# chmod 600 /etc/rsyncd.secrets root@ubuntu:~# chown root.root /etc/rsyncd.secrets
root@ubuntu:~# systemctl start rsync
root@ubuntu:~# systemctl enable rsync Synchronizing state of rsync.service with SysV init with /lib/systemd/systemd-sysv-install... Executing /lib/systemd/systemd-sysv-install enable rsync
rsync 使用的埠為 873
root@ubuntu:~# netstat -tnlp | grep 873 tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 1973/rsync tcp6 0 0 :::873 :::* LISTEN 1973/rsync
RSYNC Client
遠端 Ben 資料夾需要輸入使用者密碼,這密碼一樣儲存在 /etc/rsyncd.secrets ,格式就是 密碼 ,密碼檔權限與檔案擁有者需要做修改才能使用.
root@ubuntu:~# vi /etc/rsyncd.secrets 1234 root@ubuntu:~# chmod 600 /etc/rsyncd.secrets root@ubuntu:~# chown root.root /etc/rsyncd.secrets
指令參考:
Access via rsync daemon: Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST] rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] Push: rsync [OPTION...] SRC... [USER@]HOST::DEST rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
root@ubuntu:~# rsync -avP rben@172.16.15.130:: ftp public archive ben Ben's folder root@ubuntu:~# mkdir temp root@ubuntu:~# rsync -avP --password-file=/etc/rsyncd.secrets rben@172.16.15.130::ben temp/ receiving incremental file list sent 20 bytes received 59 bytes 158.00 bytes/sec total size is 0 speedup is 0.00
常見問題
遇到問題可以先檢查 日誌檔 /var/log/rsyncd.log 或是預設的 /var/log/syslog .
2018/01/17 01:18:03 [2612] name lookup failed for 172.16.15.249: Name or service not known 2018/01/17 01:18:03 [2612] connect from UNKNOWN (172.16.15.249) 2018/01/17 01:18:03 [2612] secrets file must not be other-accessible (see strict modes option) 2018/01/17 01:18:03 [2612] auth failed on module ben from UNKNOWN (172.16.15.249) for ben: ignoring secrets file
name lookup failed for 172.16.15.249: Name or service not known
root@ubuntu:~# vi /etc/rsyncd.conf reverse lookup = no ... root@ubuntu:~# systemctl restart rsync
secrets file must not be other-accessible (see strict modes option)
root@ubuntu:~# ll /etc/rsyncd.secrets -rw-r--r-- 1 root root 9 Jan 17 01:17 /etc/rsyncd.secrets root@ubuntu:~# chmod 600 /etc/rsyncd.secrets
成功執行的日誌檔.
2018/01/17 01:22:43 [2634] connect from UNDETERMINED (172.16.15.249) 2018/01/17 09:22:43 [2634] rsync on ben/ from ben@UNDETERMINED (172.16.15.249) 2018/01/17 09:22:43 [2634] building file list 2018/01/17 09:22:43 [2634] sent 125 bytes received 51 bytes total size 0
沒有解決問題,試試搜尋本站其他內容