标签: unison

Unison 可以按大小忽略文件吗?

程序 rsync 可以选择--max-size=SIZE禁止传输任何大于SIZE. 统一有类似的选择吗?

rsync unison

6
推荐指数
1
解决办法
909
查看次数

阻止 Excel 在打开时更改文件内容

我在我的机器上经常使用同步。Excel 会在打开文件的那一刻更改修改日期。然后,它更改文件的内容(我想更新嵌入在工作表中的统计信息)。然后,如果用户不打算保存文件,它会将日期更改回原始日期。这种行为让我的同步方案(Unison)很困惑,迫使我手动解决很多冲突。

众所周知,Unison 通过忽略 Microsoft Excel 文件的修改时间并始终比较文件内容来规避此问题。不幸的是,我经常在多台机器上同时打开相同的文件,并且从不在那里保存更改,随后我不得不在下一次同步事件时解决冲突。此外,散列大量大型 Excel 工作表的速度很慢。

有没有办法关闭这个“功能”,或者绕过它?也许是文件的一些只读按需容器。但是 - 如果我确实想保存文件怎么办?我不能在只读介质上这样做,对吗?

windows microsoft-office unison microsoft-excel

6
推荐指数
1
解决办法
1793
查看次数

linux pc上同步两个目录

我需要一个分布式文件系统(或同步工具),它能够在 4 台电脑上保持目录同步。

我的要求是:

  • 离线访问(数据必须在每台电脑上离线可用)
  • 保留执行权:某些文件在 linux 分区上被标记为可执行。应该复制此标志。
  • 高效的同步策略:我的一些文件是 20GB,它们经常更改,但更改的部分很少(Virtualbox 图像)。欢迎使用 Delta 变速箱。
  • 有效处理空间:没有文件历史记录,不应将文件复制到临时目录“以防万一”。
  • 它必须传播文件的删除
  • 修改可以发生在 4 台电脑中的任何一台,它们应该在连接其他电脑时传播。
  • 解决方案必须是容错的:大多数情况下,4 台 pc 断开连接/无法同步。

我的解决方案的其他规格是:

  • 同步通过局域网,要同步的数据总量约为 180GB,大约有一万个文件。更改很小,但可能发生在大文件中。
  • 目前我对仅适用于 linux 的解决方案感兴趣。
  • 简单的合并策略:冲突要么不发生,要么通过“最后一个胜利”解决

我还没有找到任何好的解决方案。我一直在尝试:

  • 一致:这是目前唯一的工作,但我必须做很多自定义配置(链接执行的 cron 脚本)。它将我的电脑挂了几分钟以检测变化,磁盘灯稳定亮起。
  • Sparkleshare 不能很好地处理大文件。它保留了无限期增长的所有更改的历史记录。他们承诺它将在下一个版本中修复,但目前它仍然不符合我的需求。
  • Owncloud 不能很好地处理大文件,复制性能很差,保留我更改的每个文件的历史记录(可以禁用)。
  • 尾声?(帮助!我无法正确设置!)
  • git-annex 助手会在符号链接中转换您的所有文件并将原始文件标记为只读(“以防万一您在修改它时出错”!)。在编辑文件之前,您必须发出一个特殊的命令“git-annex unlock”,它会创建文件的本地副本,如果您希望它同步,您必须记住再次锁定它。我必须先学习手册才能取回我的 180Gb 文件!再也不会在我的电脑上!

接下来要尝试什么?

file-sharing sync unison sparkleshare owncloud

5
推荐指数
1
解决办法
656
查看次数

自动一致解决冲突

我已经使用以下行在2 个文件夹(在 OSX 中)之间设置了自定义自动同步:

unison folder1 folder2 -batch -debug update+
Run Code Online (Sandbox Code Playgroud)

直到我遇到:

Synchronization complete at 12:01:44  (0 item transferred, 1 skipped, 0 failed)
  skipped: example.txt (contents changed on both sides)
Run Code Online (Sandbox Code Playgroud)

我希望该命令自动同步最新版本。查看选项:

$ unison -help | grep conflict
 -auto              automatically accept default (nonconflicting) actions
 -copyonconflict    keep copies of conflicting files
 -prefer xxx        choose this replica's version for conflicting changes
Run Code Online (Sandbox Code Playgroud)

..这表明解决问题的唯一方法是 with -prefer,但我可能会遗漏一些东西。是否可以通过时间戳指定版本?


编辑:同步报告的所有相关位:

[update+]   Unchanged file
[update+] buildUpdateChildren(handleChild): example.txt
[update] buildUpdateRec: /path/to/folder1/example.txt
[update] checkContentsChange: archStamp is inode (3373366) / info.inode …
Run Code Online (Sandbox Code Playgroud)

sync unison macos

5
推荐指数
1
解决办法
4599
查看次数

Mac OS X 主页上烦人的 unison.log

OS X 的 Unison GUI 不断在我的主目录中创建一个“unison.log”文件。

这是迟钝的,它应该隐藏文件(“.unison.log”),或者将它放在适当的位置,而不是在我的主目录中。

你知道有什么方法可以防止它这样做吗?(无需破解源代码并重新编译)

我只能想出一个守护进程来检查该文件并删除它,但也许有更好的方法......

gui unison macos

4
推荐指数
1
解决办法
1749
查看次数

使用 unison 同步多个主机

我试图让三台机器保持同步,我在其中一台机器上运行一致以同步另外两台机器。这个“明星”架构在统一手册中做了广告:

使用 Unison 同步两台以上机器

Unison 设计用于同步副本对。但是,可以通过执行多个成对同步来使用它来保持更大的机器组同步。

如果您需要这样做,最可靠的设置方法是将机器组织成“星型拓扑”,其中一台机器被指定为“中心”,其余机器被指定为“辐条”,并且每个辐条机器同步只有集线器。星型拓扑的一大优势在于它消除了混淆“虚假冲突”的可能性,因为 Unison 为其同步的每对主机维护一个单独的存档。

但是,在与

unison -fat -batch "$HOME/dir" ssh://"$myhost1//dir"
unison -fat -batch "$HOME/dir" ssh://"$myhost2//dir"
Run Code Online (Sandbox Code Playgroud)

对于两个主机,我总是收到其中之一的以下错误:

致命错误:内部错误:磁盘上的存档不相同。

当两台机器具有相同的主机名时,就会发生这种情况。

如果不是这种情况并且您反复收到此消息,请: a) 将错误报告发送至 unison-users@yahoogroups.com(您可能需要先加入群组,然后才能被允许发帖)。b) 将每台机器上的存档文件移动到其他目录(以防它们对调试有用)。这台机器上的存档文件位于目录 /home/andreas/.unison 中,名称格式为 arXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX,其中 X 是十六进制数。c) 再次运行一致以从头开始同步。

如果我按照说明 b),或者如果我运行

unison -ignorearchives -fat "$HOME/dir" ssh://"$myhost1//dir" 
Run Code Online (Sandbox Code Playgroud)

我成功同步了这个。但是然后snycing另一个会产生与上面相同的错误。似乎每当我同步其中一个时,另一个就会处于不一致的状态。除了总是添加之外,我该如何解决这个问题-ignorearchives?Unison 版本是 2.40.102,来自 ubuntu 包和 android Unison 应用程序。

ssh unix sync unison

4
推荐指数
1
解决办法
4545
查看次数

Unix 权限:无论用户如何都可以访问文件?

我已经使用 Linux 很长时间了,但我仍然完全不了解文件权限的真正工作原理。考虑到这一点,是否有人可以阅读任何书籍或详尽的指南来真正完全理解事物?我已经完成了我对系统管理的公平分享,所以我知道一些简单的事情,比如使目录可读和可写、使文件可执行以及更改文件的所有者,但是在跨用户共享文件时,我迷路了。

这是我的主要问题。我有许多机器,我打算在它们之间同步我的音乐库。我已经使用 Unison 有一段时间了,这是一个不错的选择,因为我可以在我刚刚设置的本地网络上通过 SSH 轻松运行它。双赢。

到目前为止,我一直在使用 2TB 外置硬盘同步计算机。(计算机 1 与 HD 同步,计算机 2 与 HD 同步,等等)这充其量是乏味的,尤其是因为我加密了驱动器,使其连接到我的所有机器并同步它变得非常麻烦。无论如何,驱动器正在运行 ext4(在 TrueCrypt 中),因此它维护所有 Unix 文件系统信息,如所有者和组。我刚刚设置了一台新机器,然后就用 Unison 来播放音乐,我意识到现在,我的所有权限都是 fubar。我必须以 root 身份运行 Unison,因为这是我可以从外部驱动器中获取文件的唯一方法。显然,由于我在这台机器上使用的用户名与我在所有机器上通常使用的“rfkrocktk”不同,这基本上会在齿轮上产生巨大的影响。

这是我的用例。这台笔记本电脑有两个有效用户,“leandra”和“rfkrocktk”。我想在这两个用户之间共享音乐,所以我用符号链接 /home/rfkrocktk/Music 指向 /home/leandra/Music。我如何 (a) 允许两个用户都访问此文件夹中的读/写/删除文件,以及 (b) 在不弄乱文件所有权的情况下使所有内容保持同步?


编辑

我能够让事情有点工作,但还没有完全。我将我的音乐目录的组 ID 设置为我的组media-users,并将我的主用户rfkrocktk和共享用户都添加mt-daapd到组中。现在,rfkrocktk可以完美访问文件,但mt-daapd看不到目录中的任何内容。这是我的ID:

$ id rfkrocktk
> uid=1000(rfkrocktk) gid=1000(rfkrocktk) groups=1000(rfkrocktk),4(adm),20(dialout),24(cdrom),29(audio),46(plugdev),104(lpadmin),115(admin),120(sambashare),124(vboxusers),1001(jupiter),2002(media-users)

$ id mt-daapd
> uid=123(mt-daapd) gid=65534(nogroup) groups=65534(nogroup),2002(media-users)
Run Code Online (Sandbox Code Playgroud)

我尝试将mt-daap的主组 ID 设置为media-users组,但它没有改变任何内容。

这是我对/home/rfkrocktk/Music目录的权限:

drwxr-Sr-- 201 …
Run Code Online (Sandbox Code Playgroud)

linux permissions unison file-permissions

3
推荐指数
1
解决办法
4561
查看次数