
Unison 是一款 双向文件同步工具,支持跨平台(Linux/macOS/Windows),能智能合并两端的修改,解决冲突,适合多设备间的文件同步。以下是它的核心用法和高级技巧:
一、核心特点
1. 双向同步:自动检测源端和目的端的更改,合并冲突。 2. 跨平台:支持 Windows、Linux、macOS。 3. 增量同步:仅传输变化部分,节省带宽。 4. 冲突处理:提供交互式解决选项。 5. 支持 SSH/RSH:加密传输,适合远程同步。
二、安装方法
Linux (Debian/Ubuntu)
sudo apt install unison
macOS (Homebrew)
brew install unison
三、基础用法
1. 本地目录同步
unison /path/to/local1 /path/to/local2
• 首次运行会提示确认同步方向,输入 y
确认。
2. 远程同步(SSH)
unison /local/dir ssh://user@remote//remote/dir
• 注意远程路径格式: //
后接绝对路径(如//home/user/data
)。
3. 自动接受默认操作(非交互模式)
unison -auto /path1 /path2
• -auto
:自动处理无冲突的更改。
4. 忽略特定文件/目录
创建配置文件 ~/.unison/default.prf
:
# 忽略 .git 目录和临时文件
ignore = Name .git
ignore = Name *.tmp
然后运行:
unison -batch /path1 /path2
• -batch
:非交互模式,依赖配置文件规则。
四、高级用法
1. 定时同步(结合 cron)
crontab -e
添加以下内容(每天凌晨 3 点同步):
0 3 * * * unison -batch /local/dir ssh://user@remote//remote/dir >> /var/log/unison.log 2>&1
2. 强制单向同步(覆盖目标)
unison -force /source /target -confirmmerge=false -prefer /source
• -prefer
:指定优先保留的版本。
3. 同步后执行命令
# 在配置文件中添加
postcmd = chmod -R 755 /target/dir
4. 限制带宽(避免占用网络)
unison -sshargs "-o Compression=no -l 1000" /local ssh://remote//remote
• -l 1000
:限制 SSH 带宽为 1000 KB/s。
五、配置文件示例
~/.unison/myconfig.prf
:
# 同步目录
root = /home/user/docs
root = ssh://user@server//backup/docs
# 忽略规则
ignore = Name *.log
ignore = Path /tmp
# 自动合并策略
auto = true
batch = true
# 冲突时保留较新文件
prefer = newer
运行指定配置:
unison myconfig
六、冲突处理
• 同步时若两端文件均被修改,Unison 会提示:
Conflict: file.txt was modified on both hosts
可选操作:
- `d`:差异对比(需配置 diff 工具)。
- `l`:保留左侧版本。
- `r`:保留右侧版本。
- `m`:手动编辑合并。
七、与 Rsync 对比
工具 | 同步方向 | 冲突处理 | 适用场景 |
---|---|---|---|
Unison | |||
Rsync |
八、常见问题
1. SSH 连接超时
增加超时时间:
unison -sshargs "-o ServerAliveInterval=30" /local ssh://remote//remote
2. 权限问题
同步后恢复权限:
# 在配置文件中添加
perms = 0o755
3. 大文件同步中断
使用-retry
参数:
unison -retry 5 /path1 /path2
总结
Unison 是 双向同步的最佳工具,尤其适合:
• 多台电脑同步工作文档(如笔记本 + 台式机)。 • 开发团队保持代码库一致。 • 需要冲突解决的复杂同步场景。
通过配置文件和命令行参数,可以灵活适应各种需求!
--END--
觉得不错,可以关注,点赞,转发,如果需要技术援助,可以联系我们,期待您的莅临
评论 (0)