在 Linux 中同步计算机之间的文件夹,检查差异

在 Linux 中同步计算机之间的文件夹,检查差异

我正在尝试同步我的计算机和笔记本电脑之间的文件夹。此同步应该是双向的,因为可以在笔记本电脑或计算机上进行更改。我希望它检查自上次同步以来文件之间的差异,因此如果出现不兼容,我可以修复它并重试。同步应该通过命令行启动,这样我就可以指定最快的路由(IP)。

我认为有些方法是 git,因为 git 可以跟踪更改并合并它们,但我不想保留更改的历史记录,因为“存储库”很大(+150 GiB)。我还发现了一个基于 git 的工具,称为 gut (肠道同步),它满足了我的大部分要求,但出现了一些问题。当我尝试使用它时,输出是:

ssh: must specify HostKeyCallback

这是因为这个包(gut)比较旧,而 golang 的 ssh 已经更新了。按照代码,我在子包 bismuth(gut 的同一作者)中添加了 HostKeyCallback(感谢这个答案)。之后,我再次尝试同步文件夹,它在远程机器上编译了一些东西(我不知道是什么),并且由于 OpenSSL 版本而失败(感谢这个答案)。我不想在我的系统上有两个 OpenSSL 版本,所以我想尝试其他选项。

你有什么建议?谢谢。

答案1

在搜索工具(包括特定的文件系统、基于 git 的工具(git 附件)和其他工具)之后,我找到了一个名为 Unison 的工具,它允许我使用 SSH 客户端/服务器通过计算机或本地同步两个或多个文件夹。

我测试了 Unison,使用超过 150 GiB 的目录时速度很快。它可以同步大文件。我不知道它内部是如何工作的(使用文件时间修改、差异等)。

它允许您使用编辑器合并文件,但需要一些设置(ArchLinux 上的 Unison - 在 Emacs 中合并)。

它要求在两台设备上安装 Unison,并且至少在一台设备上安装 SSH 服务器。

相关内容