我已经成功地使用rsync在我的笔记本电脑和上网本(都使用 ext4 和 Linux)之间同步我的主目录。我唯一的问题是,我时不时地喜欢完全重新组织某些目录,而rsync将此视为删除和创建新文件,这使得它非常缓慢且效率低下。
有人知道可以很好地处理文件移动的好软件吗?
我发现一致应该能够做到这一点,但它似乎在实践中不起作用。我通过同步两个本地目录来测试一致性,每个目录中都有一个大文件,它仍然检测到我的移动是删除+创建,实际上比rsync还要慢。
此外,如果我在几个月前查看unison的源代码时没记错的话,它试图做一些类似做 sha sums 的事情——而且我不希望我的理想解决方案做 sha sums——这在大的情况下太慢了文件/目录。我想要一些注意以下内容的东西:
" 此文件的最后一个源副本似乎已被删除,并且源目录树中的其他位置有一个具有相同 mdate、大小和 inode 编号的新文件,因此我将假设这是一个移动和相应地移动其目标副本,而不是执行删除+复制。”
能够快速同步这些机器对我来说很重要。
有什么建议?
最后几天我在运行一致时遇到此异常:
“加载存档时引发 End_of_file 异常”(这表明存在错误!)
它没有帮助,我无法在谷歌的其他地方找到答案,请大家谈谈但似乎无法解决?
我检查了我的文件,有损坏的符号链接,但以前从来没有问题..
完整的命令基本上是:
unison "$PATH1" "$PATH2"
-links false
-fastcheck true
-times
-retry 2
-follow "Regex .*"
-force "$PATH1"
-nodeletion "$PATH1"
-nodeletion "$PATH2"
-batch
-ui text
当尝试通过 同步两条路径(其中一条是远程路径)时ssh
,统一失败
致命错误:内部错误:新档案不相同。
虽然通过网络安装同步工作正常。
虽然unison -debug all
对可能的错误没有任何指示,但使用它ssh -v
会导致很多
通道 0:坏的 ext 数据
错误。但是,两台机器都运行相同版本的 unison (2.40.63)。
十多年来,我一直在我的小办公室的完整 Debian 环境中工作(目前有 1 台服务器、7 名用户、3 台台式机、4 台笔记本电脑)。身份验证基于 Kerberos,用户配置文件在 LDAP 中管理,$HOME 在 pam_mount 或 autofs 的帮助下通过 NFSv4 提供给所有客户端。对于在本地局域网上工作的桌面用户来说,此设置非常合适。
两年前,我开始为笔记本电脑用户使用相同的设置。WiFi 连接导致了一些额外的缓慢,并且可以肯定的是,一旦用户尝试在办公室外使用笔记本电脑,速度就会变得非常慢。优化 $XDG_{CACHE,DATA,CONFIG}_HOME 并研究 Firefox on NFS 的具体优化让事情变得更好一些。
我现在正在考虑将 $HOMES 转移到笔记本电脑+台式机。如果设备出现故障,用户可以切换设备,这很好,但这种情况只是偶尔发生一次。牺牲这种灵活性来获得更快的日常用户体验似乎是一个不错的决定。如果我可以在启动和关闭时将本地 $HOME 双向同步到中央服务器,那么可能根本不需要权衡......
我有两台机器。一个带有 unison v. 2.40 (Debian Jessie) 和一个新的 (Debian Stretch),我在其中安装了 package unison-all
,它带来了 unison 版本 2.32、2.40 和 2.48。但是,我无法让我的 2.40 对新机器起作用,因为它只提供了 v. 2.48。无论我做什么,我都会得到:
expected "Unison 2.40\n" but received "Unison 2.48\n\000\000\000\000\017",
Run Code Online (Sandbox Code Playgroud)
我通过unison-all
明确地删除和安装 v. 2.40解决了这个问题,但我想知道如果我想在这台机器上使用两个并发版本的一致,该怎么办。
我正在尝试将主机 OSX 中的文件夹同步到运行 Ubuntu 的 VM。(laravel/宅基地)。这是我在主机上运行的命令:
$ unison ssh://vagrant@192.168.10.10//home/vagrant/www ~/unison/www -repeat watch
产生以下输出
Contacting server...
Connected [...]
Looking for changes
Waiting for changes from server
Fatal error: Server: Unexpected response 'Usage: unison-fsmonitor [options] root [path] [path]...' from the filesystem watcher (expected VERSION)
Run Code Online (Sandbox Code Playgroud)
在我的本地主机上:
$ unison -version
unison version 2.48.3
$ unison-fsmonitor
VERSION 1
Run Code Online (Sandbox Code Playgroud)
在我的虚拟机上:
$ unison -version
unison version 2.48.3
$ unison-fsmonitor
Usage: unison-fsmonitor [options] root [path] [path]...
This program monitors file system changes on all given (relative to root) …
Run Code Online (Sandbox Code Playgroud) 我已经在三台机器上安装了 unison 2.48.4,两台运行 Linux Mint 17,一台运行 Linux Mint 18。我通过 SSH 进行同步。
两个17的同步没有问题。然而,18 不能与其他两个同步。生成了潜在转移列表,但是当我按“GO”时,我得到以下信息:
Fatal error: Server: Fatal error during unmarshaling (input
value: bad bigarray kind), possibly because client and server
have been compiled with different versions of the Ocaml compiler.
Run Code Online (Sandbox Code Playgroud)
当我使用图形或命令行版本的统一客户端时,我收到了相同的消息。此外,当我在客户端尝试统一 2.48.3 时,这让我相信是薄荷版本(17 对 18)的差异造成了问题。
我自己没有编译任何东西,只是从 repos 或下载的 deb 包安装。
我有两台机器,一台运行 Ubuntu 18.04,另一台运行 Ubuntu 20.04。我想使用 Unison 在它们之间同步文件,但存在一些问题。首先,因为我也与另一台机器同步,所以我从源 Unison 2.48.3 编译。然后在 Ubuntu 18.04 中,我从 Ubuntu 软件 Unison 2.48.4 安装了 Ubuntu 20.04。正确设置它们后,我从 Ubuntu 18.04 的命令行运行
unison-2.48.4-gtk
并尝试同步。尽管一切正常,即它找到了机器和目录,然后我收到消息:
Fatal error during unmarshaling (input value:ill-formed message) possibly because client and serer have been compiled with different versions of OCaml compiler
。在 20.04 中,我检查了 OCaml 的版本,但显然它没有返回任何内容(即使我已经从应用程序商店安装了 unison)。18.04 的版本是 4.05.0。关于我能做什么有什么想法吗?
我有两台机器,一台 Debian,一台 Ubuntu,都在 ext4 上,在 fstab 中启用了扩展文件属性。getfattr 和 setfattr 已安装并在本地两台机器上完美运行。但是,默认情况下,unison(版本 2.40.102)不会同步扩展文件属性。
我搜索了一下,发现这篇博客文章包含应该启用扩展属性同步的配置文件设置。所以,我改变了我的个人资料,现在它看起来像这样:
root=/path/to/dir
root=ssh://user@example.com//path/to/dir2
auto=true
batch=true
perms=0
rsync=true
maxthreads=1
retry=3
confirmbigdeletes=false
copythreshold=0
copyprog = rsync -aX --rsh='ssh -p 22' --inplace --compress
copyprogrest = rsync -aX --rsh='ssh -p 22' --partial --inplace --compress
copyquoterem = true
copymax = 1
Run Code Online (Sandbox Code Playgroud)
此配置文件同步新文件的扩展属性,但是当我更改已同步文件的扩展属性并执行一致时,我得到:
Nothing to do: replicas have not changed since last sync.
Run Code Online (Sandbox Code Playgroud)
其他一切都完美同步,但 unison 不知道扩展属性的变化。我也尝试禁用 fastcheck,希望它能更详细地检查文件;没有用。我在一个方向上尝试了 rsync'ing,它工作得很好。但我需要双向同步,所以我坚持一致。
我已经查看了官方手册,但它只顺便提到了扩展文件属性。所以我的问题是:这可以统一完成吗?我在这里错过了一些简单的东西吗?或者,是否有其他开源工具可以实现这一目标?(我知道 bsync 和 bitpocket,但在我的初步测试中,他们也没有注意到扩展文件属性的变化)。
Unison是一个跨平台的文件同步软件。Debian 上可用的最新版本已经过时:Debian 有 version2.40.102-2
而其他系统有 version 2.48.3
。
问题是,Unison 不会在使用不同版本的两台机器之间工作,因此2.48
Mac OS 上的Unison不会与使用2.40
Debian 等版本的机器同步。这使得 Debian 和 Ubuntu 上的 Unison 无法用于跨平台同步。
当然,人们可以从 Unison 下载源代码并在 Debian 上构建它,但这与简单的apt-get install unison
.
所以我的问题是,看起来维护人员不再更新 Unison 包了,我能做些什么来提供帮助?
我从未参与过 Debian 的打包工作,我在 Debian 社区中也没有任何名声。我所拥有的只是一个更新的 Unison 二进制文件,我想让它用于一个简单的apt-get install
.