我有几台计算机运行在桌面上,我希望合并它们的设置(然后保持它们的同步)。使用dconf dump /,我可以获得配置细节,但是比较输出(与meld)是没有希望的,因为显示条目的顺序是不一样的,因此手动、智能合并是不可行的。
或者,我可以使用gsettings list-recursively,它提供了一个列表,可以排序,然后进行比较,但是我不知道如何回写结果(这个文件格式没有类似于dconf load的命令)。
我认为可能的办法是:
dconf dump的输出进行排序(应该有一些实用程序,但我找不到)gsettings write-many函数,作为gsettings list-recursively的逆函数)gsettings列表转换为dconf dump格式dconf dump列表排序。现有工具最简单的是什么?考虑到讨论和这里,我的目标是保持配置保持同步,这可能并不容易。
举个例子,我包括了我目前拥有的两种列表格式的简短部分:
gsetting生产(提取):
org.gnome.rhythmbox.podcast-source paned-position 180
org.gnome.rhythmbox.podcast-source sorting ('Feed', true)
org.blueman.transfer opp-accept false
org.blueman.transfer shared-path ''
org.mate.Caja.Sendto last-compress 0
org.mate.Caja.Sendto last-medium ''
org.gnome.evolution-data-server.calendar contacts-reminder-interval 15和dconf dump (不同的提取物):
[apps/light-locker]
idle-hint=false
late-locking=false
lock-after-screensaver=uint32 0
lock-on-lid=false
lock-on-suspend=false
[ca/desrt/dconf-editor]
saved-view='/org/mate/caja/'
window-height=600
window-is-maximized=false
window-width=800发布于 2020-11-22 14:53:15
目前,我找到了一个简单的解决方案:
我发现从dconf收到的转储在更新时变化很小。因此,从最初加载转储开始,然后逐步更新配置并生成一个新转储就足够了。初始转储和最终转储可以与meld进行比较;合并是可能的。
我将此与ansible一起使用,将currentTargetDump复制到其他机器并加载。这使得所有的ansible host计算机都具有相同的配置。
在加载新配置之前,我将对当前配置进行转储。我可以用Meld比较当前配置和目标配置,并将更改合并到目标配置中,并将其写入到将来的目标配置中,作为分发到所有主机的未来目标配置。
看起来很简单,到目前为止运作得很好。
https://askubuntu.com/questions/1294092
复制相似问题