双向文件同步最佳工具-unison

奥黛丽·逐爱者
2025-08-30 / 0 评论 / 0 阅读 / 正在检测是否收录...

 

图片

    Unison 是一款 双向文件同步工具,支持跨平台(Linux/macOS/Windows),能智能合并两端的修改,解决冲突,适合多设备间的文件同步。以下是它的核心用法和高级技巧:


一、核心特点

  1. 1. 双向同步:自动检测源端和目的端的更改,合并冲突。
  2. 2. 跨平台:支持 Windows、Linux、macOS。
  3. 3. 增量同步:仅传输变化部分,节省带宽。
  4. 4. 冲突处理:提供交互式解决选项。
  5. 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. 1. SSH 连接超时
    增加超时时间:
unison -sshargs "-o ServerAliveInterval=30" /local ssh://remote//remote
  1. 2. 权限问题
    同步后恢复权限:
# 在配置文件中添加
perms = 0o755
  1. 3. 大文件同步中断
    使用 -retry 参数:
unison -retry 5 /path1 /path2

总结
Unison 是 双向同步的最佳工具,尤其适合:

  • • 多台电脑同步工作文档(如笔记本 + 台式机)。
  • • 开发团队保持代码库一致。
  • • 需要冲突解决的复杂同步场景。

通过配置文件和命令行参数,可以灵活适应各种需求!

--END--
觉得不错,可以关注,点赞,转发,如果需要技术援助,可以联系我们,期待您的莅临

 

0

评论 (0)

取消