# Linux中Rsync服務的示例分析
## 1. Rsync概述
### 1.1 Rsync簡介
Rsync(Remote Synchronization)是Linux/Unix系統中廣泛使用的文件同步工具,由Andrew Tridgell于1996年開發。它采用差異傳輸算法,僅同步發生變化的文件部分,顯著提高傳輸效率。
### 1.2 核心特性
- **增量傳輸**:僅傳輸源與目標差異部分
- **保留屬性**:支持保留文件權限、時間戳等元數據
- **壓縮傳輸**:內置zlib壓縮減少帶寬消耗
- **靈活認證**:支持SSH、RSH等加密傳輸方式
- **目錄處理**:可遞歸同步整個目錄樹
## 2. Rsync安裝與配置
### 2.1 安裝方法
```bash
# Debian/Ubuntu
sudo apt install rsync
# RHEL/CentOS
sudo yum install rsync
# 驗證安裝
rsync --version
編輯配置文件/etc/rsyncd.conf
:
[backup]
path = /data/backup
comment = Backup Directory
uid = root
gid = root
read only = no
list = yes
auth users = backupuser
secrets file = /etc/rsyncd.secrets
創建認證文件:
echo "backupuser:password123" > /etc/rsyncd.secrets
chmod 600 /etc/rsyncd.secrets
啟動服務:
systemctl start rsync
systemctl enable rsync
# 同步本地目錄(保留屬性)
rsync -avz /source/path /destination/path
# 刪除目標多余文件(鏡像同步)
rsync -avz --delete /source/ /destination/
通過SSH協議:
# 拉取遠程文件
rsync -avz -e ssh user@remote:/remote/path /local/path
# 推送本地文件
rsync -avz -e ssh /local/path user@remote:/remote/path
通過rsync協議:
rsync -avz backupuser@remote::backup /local/backup
# 排除特定文件
rsync -avz --exclude='*.tmp' /source/ /destination/
# 帶寬限制(100KB/s)
rsync -avz --bwlimit=100 /source/ user@remote:/destination/
# 增量備份(基于硬鏈接)
rsync -avz --link-dest=/previous/backup /source/ /new/backup
#!/bin/bash
# 每日網站備份腳本
DATE=$(date +%Y%m%d)
rsync -avz --delete \
--exclude='cache/*' \
--exclude='tmp/*' \
-e ssh webuser@webserver:/var/www/ \
/backup/web_${DATE}/
# 使用checksum驗證文件完整性
rsync -avzc --progress \
--log-file=/var/log/rsync_dc2.log \
-e "ssh -p 2222" \
/primary/data/ backupuser@dr-site::backup
#!/bin/bash
# 監控目錄實時同步
inotifywait -mrq --format '%w%f' -e create,modify,delete /data |
while read file; do
rsync -avz --delete /data/ backupuser@remote::backup
done
# 啟用壓縮(適合文本文件)
rsync -avz --compress-level=3 /source/ user@remote:/dest/
# 并行傳輸(多個文件同時傳輸)
rsync -avz --progress --stats --human-readable \
--partial-dir=.rsync-partial \
--max-size=100m \
--bwlimit=5000 \
/source/ user@remote:/dest/
# 減少磁盤尋道(適合機械硬盤)
rsync -avz --no-whole-file --inplace /source/ /dest/
# 禁用atime更新
rsync -avz --noatime /source/ /dest/
# /etc/rsyncd.conf 安全配置
hosts allow = 192.168.1.0/24, 10.0.0.1
hosts deny = *
max connections = 5
timeout = 300
# 啟用詳細日志
rsync --daemon --config=/etc/rsyncd.conf --log-file=/var/log/rsyncd.log
# 日志輪轉配置(/etc/logrotate.d/rsync)
/var/log/rsync.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
}
# 測試端口連通性
telnet remote_host 873
# 查看服務狀態
systemctl status rsync
journalctl -u rsync
# 確保目錄權限正確
chown -R backupuser:backupgroup /data/backup
chmod -R 750 /data/backup
# 檢查SELinux上下文
restorecon -Rv /data/backup
# 使用--progress和--stats參數
rsync -avz --progress --stats /source/ /dest/
# 輸出示例:
# Total bytes sent: 1,234,567
# Total bytes received: 12,345
# sent 1,234,567 bytes received 12,345 bytes 200,000.00 bytes/sec
工具 | 增量同步 | 加密傳輸 | 斷點續傳 | 適合場景 |
---|---|---|---|---|
Rsync | ?? | ?? | ?? | 常規文件同步 |
SCP | ? | ?? | ? | 簡單文件傳輸 |
SFTP | ? | ?? | ?? | 交互式文件管理 |
Unison | ?? | ?? | ?? | 雙向同步 |
DRBD | ?? | ? | ?? | 塊設備級同步 |
Rsync作為經過時間檢驗的同步工具,在數據備份、災備方案、持續部署等場景中發揮著重要作用。通過合理配置和優化,可以構建高效可靠的文件同步體系。建議結合具體業務需求,選擇適當的同步策略和參數組合。
最佳實踐提示:定期驗證備份完整性,關鍵系統建議采用”3-2-1”備份原則(3份副本,2種介質,1份異地) “`
注:本文實際約2200字,完整版可根據需要擴展以下內容: 1. 更詳細的性能測試數據 2. 特定場景下的配置文件模板 3. 與其他工具(如Lsyncd)的集成方案 4. Windows系統下的Rsync使用指南 5. 大規模集群中的Rsync部署經驗
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。