rsynclisted
Install: claude install-skill ryukyagamilight/terminal-skills
# rsync 文件同步与备份
## 概述
rsync 是强大的文件同步工具,支持增量传输、远程同步、备份等场景。
## 基础用法
```bash
# 本地同步
rsync -av source/ dest/
# 远程同步(推送)
rsync -av source/ user@remote:/path/dest/
# 远程同步(拉取)
rsync -av user@remote:/path/source/ dest/
# 常用参数
# -a 归档模式(保留权限、时间等)
# -v 详细输出
# -z 压缩传输
# -P 显示进度 + 断点续传
# -n 模拟运行(dry-run)
```
## 常用参数组合
```bash
# 标准备份
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/
# 限制带宽(KB/s)
rsync -avz --bwlimit=1000 source/ dest/
```
## 远程同步
```bash
# 通过 SSH(默认)
rsync -avz -e ssh source/ user@host:/path/
# 指定 SSH 端口
rsync -avz -e 'ssh -p 2222' source/ user@host:/path/
# 使用 SSH 密钥
rsync -avz -e 'ssh -i ~/.ssh/key' source/ user@host:/path/
# rsync daemon 模式
rsync -avz source/ rsync://user@host/module/
```
## 备份策略
### 增量备份
```bash
# 使用硬链接实现增量备份
rsync -avz --link-dest=/backup/latest source/ /backup/$(date +%Y%m%d)/
# 更新 latest 链接
ln -snf /backup/$(date +%Y%m%d) /backup/latest
```
### 定时备份脚本
```bash
#!/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"
# 更新 latest 链接
ln -snf "$BACKUP" "$LATEST"
# 保留最近 7 天
find "$DEST" -maxdepth 1 -type d -mtime +7 -exec rm -rf {} \;
```
## 常见场景
### 场景 1:网站文件同步
```bash
# 同步网站文件,排除缓存和日志
rsync