1 个不稳定版本
0.2.0 | 2021年10月3日 |
---|
#40 in #双向
96KB
2K SLoC
杜埃
双向同步,类似于 Unison。维护两个目录的最后已知状态,并从这个状态识别和同步更改。
用法
USAGE:
duet [FLAGS] <profile> [path]
FLAGS:
-i, --interactive interactive conflict resolution
-y, --yes assume yes (i.e., synchronize, if there are no conflicts)
-b, --batch run as a batch (abort on conflict)
-f, --force in batch mode, apply what's possible, even if there are conflicts
-v, --verbose verbose output
-n, --dry-run don't apply changes
--version prints version information
--license prints license information (including dependencies)
-h, --help prints help information
ARGS:
<profile> profile to synchronize
<path> path to synchronize
配置文件
配置文件定义在 ~/.config/duet/my_profile.prf
中,并具有以下结构
~
ssh my_server duet ~
+Path1
+Path2
+Path3
-Path3/Path4
-Path3/Path5
+Path6
[ignore]
glob1*
glob2*
前两行指定要同步的目录。这两个目录可以是本地的,或者第二个可以具有以下形式 ssh 服务器-name 路径/to/duet 目录-to-synchronize
。在一行空白之后,有一个列表,指定了在 directory-to-synchronize
下的包含-排除路径(默认不包含任何内容)。一个可选的 [ignore]
部分指定要忽略的glob模式。
随后,duet my_profile
将同步这两个目录。
注意
杜埃使用 openssh 包,它仅支持SSH的密码免认证。
与Unison的比较
Unison的优点
- 更加成熟且经过实战检验
- 支持Windows
- 提供GUI
杜埃的优点
- 受限同步
- 交互式TUI
受限同步可能是杜埃最大的优点。简而言之,可以将目录扫描限制为特定路径。由于扫描通常占主导地位,这可以使同步速度提高两个数量级,这对于某些工作流程来说是一个很大的提升。在Unison中,可以通过创建具有相同状态的好几个配置文件来实现类似的效果,但在实践中,对于每个要同步的项目都不需要设置这些配置要方便得多。
受限路径可以是绝对的,也可以是相对的。在前者的情况下,基本路径会被自动移除。在后者的例子中,如果路径以 .
或 ..
开头,那么它相对于当前目录;否则它相对于基本目录。
例如,
duet my_profile ~/Path1/...
duet my_profile .
依赖项
~20–33MB
~504K SLoC