SuperAPI AI 工具集

rsync

部署与运维

查看项目

更新于 10-15 07:49

技能介绍

rsync 是一款文件同步、备份与部署工具,核心语法为 rsync [options] source destination。尾部斜杠会影响复制结果:/src/dir/ 复制目录内容,/src/dir 则把目录本身复制到目标位置。

一、主要能力 rsync 支持本地同步以及通过 SSH 的远程推送(本地到远程)和拉取(远程到本地);支持 -z 传输压缩、--compress-level=0 关闭压缩、--bwlimit 限速、--partial/P 断点续传与进度显示。常用标志包括 -a(归档,递归并保留权限、时间、符号链接、属组、属主、设备)、-v、-z、-n(试运行)、-P、--progress、-h、-r、-u、-c(校验和)、--stats、-q 等。属性保留可使用 -a 或 -rlptgoD 组合,也可用 --no-owner、--no-group、-H 保留硬链接、-AX 保留 ACL 与扩展属性。

二、文件过滤与删除 可通过 --exclude、--include、--exclude-from、--filter(+ 包含、- 排除、H 隐藏、P 保护)和 .rsync-filter 的 dir-merge 规则来控制传输范围。删除模式提供 --delete、--delete-after、--delete-before、--delete-excluded、--delete-during,并可用 --filter='P 模式' 保护目标端文件不被删除;--max-delete 可作为删除数量安全阀。

三、备份与部署 备份方面支持 --backup 与 --backup-dir 或 --suffix 保留被覆盖文件;通过 --link-dest 结合日期目录和 latest 软链接可实现节省空间的每日轮换备份,并可用脚本结合 Cron 定时执行、用 flock 加锁避免任务重叠、失败时发送邮件。部署方面常用带 --delete 的镜像同步,排除 .git、.env、node_modules、.DS_Store 等;可先加 -n 试运行确认,再正式执行;支持多服务器并行部署、--rsync-path="sudo rsync" 配合远程 systemctl 重载,以及基于 releases 目录和软链接切换的原子部署。

四、试运行与输出解读 使用 -n 预览变更,--itemize-changes 输出逐项变化,格式为 YXcstpoguax,其中 Y 表示发送/接收/本地变更/硬链接,X 表示文件/目录/符号链接,其后字符表示校验和、大小、时间、权限、属主、属组以及 ACL、xattr 的差异;--stats 可在结束时显示统计信息。

五、守护进程模式 rsync 可通过 /etc/rsyncd.conf 配置共享模块,使用 rsync --daemon --config=... 启动;连接方式为双冒号即不经过 SSH,如 rsync -av server::share/ /local/copy/ 或 rsync://syncuser@server/share/,并可列出模块。

六、适用场景与常见配方 常见用途包括网站部署、数据库转储同步、dotfiles 跨机同步、照片库镜像到 NAS、排除构建产物同步项目、大文件限速续传,以及通过两方向 -avu 实现近似双向同步(真正双向同步需使用其他工具)。

七、限制与排障 rsync 不直接支持云存储(S3、GCS、Dropbox 等),此类场景资料中建议使用 rclone;与 scp、sftp、rclone 的对比中,rsync 在增量传输、断点续传、压缩、删除目标端多余文件、限速、权限保留和过滤方面具备相应能力。排障方面可检查 SSH 密钥权限、目标目录权限、使用 --rsync-path="sudo rsync"、对已压缩文件关闭压缩、更换更快 SSH 密码、使用 -c 校验、-avvv 调试、设置 --timeout 和 --contimeout 等。