| name | rsync |
| description | rsync 文件同步与备份 |
| version | 1.0.0 |
| author | terminal-skills |
| tags | ["backup","rsync","sync","recovery"] |
rsync 文件同步与备份
概述
rsync 是强大的文件同步工具,支持增量传输、远程同步、备份等场景。
基础用法
rsync -av source/ dest/
rsync -av source/ user@remote:/path/dest/
rsync -av user@remote:/path/source/ dest/
常用参数组合
rsync -avz source/ dest/
rsync -avzP source/ dest/
rsync -avz --delete source/ dest/
rsync -avz --exclude='*.log' --exclude='.git' source/ dest/
rsync -avz --exclude-from='exclude.txt' source/ dest/
rsync -avz --bwlimit=1000 source/ dest/
远程同步
rsync -avz -e ssh source/ user@host:/path/
rsync -avz -e 'ssh -p 2222' source/ user@host:/path/
rsync -avz -e 'ssh -i ~/.ssh/key' source/ user@host:/path/
rsync -avz source/ rsync://user@host/module/
备份策略
增量备份
rsync -avz --link-dest=/backup/latest source/ /backup/$(date +%Y%m%d)/
ln -snf /backup/$(date +%Y%m%d) /backup/latest
定时备份脚本
#!/bin/bash
set -euo pipefail
SOURCE="/data/"
DEST="/backup/"
DATE=$(date +%Y%m%d_%H%M%S)
LATEST="$DEST/latest"
BACKUP="$DEST/$DATE"
rsync -avz --delete --link-dest="$LATEST" "$SOURCE" "$BACKUP"
ln -snf "$BACKUP" "$LATEST"
find "$DEST" -maxdepth 1 -type d -mtime +7 -exec rm -rf {} \;
常见场景
场景 1:网站文件同步
rsync -avz --delete \
--exclude='cache/' \
--exclude='*.log' \
--exclude='uploads/tmp/' \
/var/www/html/ backup@remote:/backup/www/
场景 2:数据库备份同步
mysqldump -u root -p database > /backup/db.sql
rsync -avzP /backup/db.sql backup@remote:/backup/mysql/
场景 3:断点续传大文件
rsync -avzP large_file.tar.gz user@remote:/path/
故障排查
| 问题 | 解决方法 |
|---|
| 权限错误 | 检查目标目录权限,使用 --chmod |
| 连接超时 | 检查网络、SSH 配置、防火墙 |
| 空间不足 | 清理目标磁盘,使用 --max-size 限制 |
| 同步慢 | 使用 -z 压缩,--bwlimit 限速 |
| 文件被跳过 | 检查 --exclude 规则,使用 -v 查看详情 |
注意事项
rsync -av source/ dest/
rsync -av source dest/
rsync -avzn --delete source/ dest/
rsync -avz --delete source/ dest/