首先我們需要知道 rsync 的基本使用方法,可以通過 man rsync
簡單的了解一下。
本地:rsync [選項...] 源... [目標]
通過 SSH 遠程連接:
拉取: rsync [選項...] [用戶@]地址:源... [目標]
推送: rsync [選項...] 源... [用戶@]地址:目標
通過 rsync 監聽服務:
拉取:
rsync [選項...] [用戶@]地址::源... [目標]
rsync [選項...] rsync://[用戶@]地址[:端口]/源... [目標]
推送:
rsync [選項...] 源... [用戶@]地址::目標
rsync [選項...] 源... rsync://[用戶@]地址[:端口]/目標
只有提供 SRC 參數,而沒有 DEST 參數將列出源文件而不是複製。
快速開始#
使用平台:ubuntu 20
如何實現:通過在服務端配置 rsync 監聽服務,並在客戶端主動推送,並設置 crontab 定時任務。
配置 rsync 監聽#
在遠程伺服器,也就是希望同步文件保存的伺服器中,依次執行命令進行判斷:
root@ubuntu:~# sudo apt update
root@ubuntu:~# sudo apt install rsync
檢查 rsync 環境是否已安裝。
root@ubuntu:~# service rsync status
查看 rsync 服務信息。
● rsync.service - fast remote file copy program daemon
Loaded: loaded (/lib/systemd/system/rsync.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2022-05-09 00:19:13 MSK; 29min ago
Docs: man:rsync(1)
man:rsyncd.conf(5)
Main PID: 6216 (rsync)
Tasks: 1 (limit: 2279)
Memory: 13.0M
CGroup: /system.slice/rsync.service
└─6216 /usr/bin/rsync --daemon --no-detach
使用任意編輯器,或者 cat 打開 rsync.service
服務文件。
[Unit]
Description=fast remote file copy program daemon
Documentation=man:rsync(1) man:rsyncd.conf(5)
ConditionPathExists=/etc/rsyncd.conf
After=network.target
[Service]
ExecStart=/usr/bin/rsync --daemon --no-detach
[Install]
WantedBy=multi-user.target
通過 ConditionPathExists=/etc/rsyncd.conf 我們可以得知 rsync 讀取 rsyncd.conf 讀取配置文件。
root@ubuntu:~# vim /etc/rsyncd.conf
使用任意編輯器打開配置文件,如果不存在就創建一個,別問怎麼創建,建議自行百度。
配置選項#
[custom1]
pid file = /var/run/rsyncd1.pid
...
[custom2]
pid file = /var/run/rsyncd2.pid
...
[custom3]
pid file = /var/run/rsyncd3.pid
...
必須:創建自定義模塊,之後連接時會用到。
uid = user1
gid = group1
必須:rsync 模塊的用戶,不推薦 root,建議使用 adduser --disabled-login [username]
創建一個。
path = /path/to/backup
use chroot = yes
必須:使用 path 定義這個模塊的路徑,並使用 use chroot 加強安全性。
read only = no
write only = no
可選:是否啟用讀取或寫入,可自行按需求配置。
hosts allow = 154.53.59.237
# 最大連接數
max connections = 4
# 啟用傳輸日誌
transfer logging = yes
# 指定日誌格式
log format = %t %a %m %f %b
list = no
額外:通過 hosts allow 限制 IP 訪問,以及 list 隱藏使用的模塊。
客戶端連接#
在客戶端,同樣下載 rsync,使用以下指令測試是否配置成功。
root@vmi819506:~# rsync -avzrn /tmp/test/ rsync://[用戶]@[地址][:端口]/[模塊]
排錯方案#
Q1:無法連接到服務端。
A1:可能是服務端的端口未開放,rsync 默認使用 873 端口監聽。
設置定時#
使用 crontab,時間到後自動運行,下面是一個例子(每 5 分鐘運行一次 rsync):
5 * * * * [指令]
總結#
那麼這篇文章到這裡就結束了,之後可能會對本文的一些內容進行補充或修改。
rsync 的配置寫起來總感覺不夠優雅,也沒有 md 的高亮支持,寄