目录同步 (sync)
📅 2026-8-16
基本用法
xxssh --profile prod sync ./site /var/www/site # push(默认)
xxssh --profile prod sync ./site /var/www/site --dry-run # 预演,不做改动
xxssh --profile prod sync ./site /var/www/site --delete # 删除远端多余文件
方向
push(默认):本地 -> 远端-d pull:远端 -> 本地(备份常用)-d both:双向合并,冲突按--conflict策略处理
增量规则
大小相同且修改时间相差 <=1 秒即跳过。传输自动保留 mtime,所以第二次运行会全部跳过。
冲突策略(both 模式)
| 策略 | 行为 |
|------|------|
| fail(默认) | 报告冲突、不动该文件,退出码 1 |
| newer | 较新的一侧胜出(时间差 <=1 秒且大小不同视为歧义 -> 冲突) |
| local / remote | 固定本地 / 远端胜出 |
过滤(rsync 风格通配)
- 不含
/的模式按文件名匹配任意深度:*.tmp覆盖a/b/x.tmp - 含
/的模式匹配相对路径:sub/**、a/*.log - 可重复出现;排除优先于包含
安全保证
--delete永不删除被排除 / 非受管的文件- 目录仅在空时移除(rmdir 语义),绝不递归删除内容
- 先
--dry-run查看delete-remote列表再实际执行,dry-run 与实际行为一致