3

我用我的副本更改了硬盘驱动器的安装点

/media/frisch/DATEN/Dok-Daniel/ISAS

/mnt/DATEN_SSD/ISAS

当我想同步这个时,Unison 说

Warning: No archive files were found for these roots, whose canonical names are: [...] Update detection may take a while on this run if the replicas are large.

我究竟该如何使用rootalias选项来使用旧存档文件(包含当前同步​​状态的内部 Unison 文件),而 Unison 不必重新读取我的所有文件?

4

2 回答 2

2

rootalias 的正确语法是

rootalias = //new-hostname//new-path -> //old-hostname//old-path

hostname(通过在命令提示符下键入来查找本地计算机的主机名。)

因此,在我的情况下,两个驱动器都安装在本地计算机上,我必须像这样更改命令行:

老的:

unison -root "/media/frisch/DATEN_SSD/ISAS/" -root "/media/frisch/DATEN/Dok-Daniel/ISAS/"

新的:

unison -root "/mnt/DATEN_SSD/ISAS" -root "/mnt/DATEN/Dok-Daniel/ISAS" \
-rootalias "//frisch-ThinkPad-P51//mnt/DATEN_SSD/ISAS -> \
//frisch-ThinkPad-P51//media/frisch/DATEN_SSD/ISAS" \
-rootalias "//frisch-ThinkPad-P51//mnt/DATEN/Dok-Daniel/ISAS -> \
//frisch-ThinkPad-P51//media/frisch/DATEN/Dok-Daniel/ISAS"

然后我可以在新位置同步文件而无需缓慢的重新读取。

但是,请记住 Unison 作者的警告。

警告:该rootalias选项很危险,只有在您确定自己知道自己在做什么的情况下才应使用该选项。特别是,仅当您确定 (1) 原始根目录和新别名都引用同一组文件,或 (2) 文件已重新定位以致原始名称现在无效时,才应使用它并且永远不会再被使用。(如果原始根目录和别名引用不同的文件集,Unison 的更新检测器可能会混淆。)在引入新的 之后rootalias,最好交互式运行 Unison 几次(batch关闭标志等)和仔细检查事情是否合理——特别是更新检测是否按预期工作。

于 2018-11-02T11:49:30.173 回答
0

简短的修正,我对 DHCP 添加域有真正的问题,这就是 rootalias 不起作用的原因。

例如,我试图添加指向同一台机器的 rootalias,但我找不到它不工作的原因。最后发现第一次同步是在其他网络位置完成的,其中路由器将.lan作为域添加,当前位置 DHCP 提供.local域。因此,要发现旧主机名,最好这样做

head -n3 ~/.unison/asddfrgrehrthtehrhtyrjyj

对于旧的同步数据库,检查exact当时的主机名,并执行以下命令来识别当前主机名:

hostname
macbook.local

然后把它放到配置文件中,结果我有:

root = /my/Archiv
root = /Volumes/BACKUP/Archiv

rootalias = //macbook.local//my/Archiv -> //macbook.lan//my/Archive
rootalias = //macbook.local//Volumes/BACKUP/Archiv -> //macbook.lan//Volumes/BACKUP/Archive

旧位置是右侧的第二部分,这很有效。

于 2020-10-24T10:45:01.813 回答