rsync 是 Linux 下強大的差異同步備份工具,支援 SSH 加密傳輸、守護進程模式、定時任務。本文系統整理核心參數、服務端搭建、客戶端調用、定時同步與常見問題。
| 參數 | 含義 |
|---|---|
| -a, --archive | 歸檔模式,等同 -rlptgoD(保權限、屬主、時間、符號鏈接等) |
| -z, --compress | 傳輸時壓縮數據 |
| -v, --verbose | 顯示詳細進度 |
| -e, --rsh=COMMAND | 指定遠程 Shell(ssh/rsh) |
| --delete | 精確鏡像:源端刪除的文件,目標端同步刪除 |
| --include=PATTERN | 不排除符合模式的文件/目錄 |
| --exclude=PATTERN | 排除符合模式的文件/目錄 |
| --password-file=FILE | 指定密碼文件(守護進程模式認證) |
rsync://[USER@]HOST[:PORT]/PATH # rsync 守護進程路徑 [USER@]HOST::PATH # 守護進程另一種寫法 [USER@]HOST:PATH # SSH/遠程 Shell 路徑 LOCAL_PATH # 本地路徑
關鍵細節:源路徑結尾 有無斜線語義不同:
src/ → 複製目錄內容,不含目錄本身src → 複製目錄本身及內容# 將遠端 test:/home/ftp/pub/ 同步到本地 /home/ftp/pub/ rsync -ave ssh test:/home/ftp/pub/ /home/ftp/pub/ # 通過 rsync 協議同步並刪除多餘文件(謹慎使用 --delete) rsync -azv --delete rsync://linuxing@192.168.1.100/blog /var/www/html/
log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid lock file = /var/run/rsync.lock [test] path = /var/www/html/test comment = test folder uid = apache gid = apache ignore errors read only = yes list = no auth users = linuxing secrets file = /etc/rsyncd.secrets
linuxing:backup
權限鎖死:chown root:root /etc/rsyncd.secrets && chmod 600 /etc/rsyncd.secrets
rsync --daemon
sed -i -e '/disable/{ s/yes/no/ }' /etc/xinetd.d/rsync
service xinetd restart
# 帶密碼同步 rsync -azv --delete rsync://linuxing@192.168.1.100/test /var/www/html --password-file=/etc/test # 密碼文件 /etc/test 內容僅一行:backup,權限 600 # 定時任務(每工作日晚 22:00 同步,去掉 -v 避免刷屏) crontab -e 0 22 * * 1-5 /usr/bin/rsync -az --delete rsync://linuxing@192.168.1.100/test /var/www/html --password-file=/etc/test
| 文件 | 路徑 |
|---|---|
| 配置文件 | /usr/local/etc/rsyncd.conf |
| 啟動腳本 | /usr/local/etc/rc.d/rsyncd.sh |
| 二進制 | /usr/local/bin/rsync |
| 開機自啟 | /etc/rc.conf 加 rsyncd_enable="YES" |
--delete)、增量傳輸、斷點續傳掌握 rsync 核心參數與部署模式,是構建高可靠備份體系的基礎技能。