Как я могу просмотреть содержимое резервной копии файла базы данных dconf?

20

Я сделал резервную копию файла, в котором dconfхранится моя база данных ( ~/.config/dconf/userэто двоичный файл), и теперь мне нужно переместить некоторые ключи из резервной копии dconfв используемую.

Как я могу просмотреть содержимое резервной копии, dconfне помещая его «на место», и просмотреть его, например dconf-editor?

PetaspeedBeaver
источник

Ответы:

25

Чтобы просмотреть содержимое этого файла, вы можете переименовать его - например, testпоместить его под, ~/.config/dconf/а затем dconfпрочитать / выгрузить настройки из этого файла.
По умолчанию , dconfчитает пользователь БД находится в $XDG_CONFIG_HOME/dconf/:

"user-db"Строка определяет пользовательскую базу данных.
Эти базы данных находятся в $XDG_CONFIG_HOME/dconf/. Имя файла, который нужно открыть в этом каталоге, в точности соответствует его названию в профиле. Ожидается, что этот файл будет в формате двоичной базы данных dconf. Обратите внимание, что XDG_CONFIG_HOMEнельзя установить / изменить для терминала или сеанса, потому что тогда писатель и читатель будут работать на разных БД (писатель запускается DBus и не может видеть эту переменную).

В результате вам потребуется пользовательский профиль, который указывает на этот конкретный файл базы данных - например, user-db:testи затем dconfвыдает команду сбросить данные (используя пользовательский профиль) через DCONF_PROFILEпеременную среды:

cd
cp /path_to_backup_dconf/user ~/.config/dconf/test
printf %s\\n "user-db:test" > db_profile
DCONF_PROFILE=~/db_profile dconf dump / > old_settings

В результате получается файл ( old_settings), содержащий настройки из вашего dconfфайла резервной копии , например:

[org/gnome/desktop/interface]
font-name='DejaVu Sans Oblique 10'
document-font-name='DejaVu Sans Oblique 10'
gtk-im-module='gtk-im-context-simple'
clock-show-seconds=true
icon-theme='HighContrast'
monospace-font-name='DejaVu Sans Mono Oblique 10'

[org/gnome/desktop/input-sources]
sources=@a(ss) []
xkb-options=@as []

[org/gnome/desktop/wm/preferences]
num-workspaces=4
titlebar-font='DejaVu Sans Bold Oblique 10'

.......

Затем вы можете удалить эти файлы:

rm -f ~/db_profile ~/.config/dconf/test

и загрузите старые настройки в текущую базу данных:

dconf load / < old_settings

Если вы хотите сбросить только определенные настройки, просто укажите путь:

DCONF_PROFILE=~/db_profile dconf dump /org/gnome/desktop/wm/preferences/
[/]
num-workspaces=4
titlebar-font='DejaVu Sans Bold Oblique 10'

но обратите внимание, что для каждого пути у вас должен быть свой файл, и при загрузке вы должны указать путь соответствующим образом:

dconf load /org/gnome/desktop/wm/preferences/ < old_wm_settings

Также обратите внимание, что из-за изменений dconfв исходной версии старые базы данных могут содержать пути, ключи и значения, которые недопустимы в более новых версиях, поэтому полная совместимость между db-файлами, созданными в разных версиях, dconfне всегда гарантируется. В этом случае вам придется проверить полученный old_settingsфайл и вручную удалить или отредактировать записи, которые являются недействительными, перед загрузкой в ​​текущую базу данных.

don_crissti
источник
17
WTF? Кто несет ответственность за этот беспорядок и кого следует избивать из-за этого? (Но: Большое спасибо за эту информацию, она мне тоже помогла.)
Тино
1
Разработчики @Tino gnome, я верю :) Но должны быть некоторые инструменты интерфейса
Anwar
Я думаю, что чтение не проблема. Просто установите XDG_CONFIG_HOMEдругой каталог. Магия профиля не требуется. Но запись в произвольный файл dconf трудна и может сделать трюк вашего профиля необходимым.
Торстен Бронджер
-1

Я думаю, что первый ответ слишком усложнил вопрос, поэтому давайте попробуем еще раз, используя /org/cinnamon/в качестве примера пространство имен для резервного копирования и восстановления:

Для резервного копирования / org / cinnamon /:

Из терминала запустите:

dconf dump /org/cinnamon/ > backup_of_my_cinnamon_settings

сохранить backup_of_my_cinnamon_settingsфайл где-нибудь на потом

Чтобы сбросить / org / cinnamon / по умолчанию:

dconf reset -f /org/cinnamon/

Обратите внимание, что при этом корица может замерзнуть или потерпеть крах

Чтобы восстановить все настройки для / org / cinnamon:

dconf load /org/cinnamon/ < backup_of_my_cinnamon_settings


Процесс будет таким же для /org/gnome/terminal/и т. Д.

Для достижения наилучших результатов обновляйте ссылки на приложения, когда они не запущены.

Спасибо Cinnamon Docs за советы.

Марк Стосберг
источник
3
Я думаю, вам следует попробовать еще раз: вопрос здесь не в том, как сделать резервную копию и восстановить некоторые настройки, а в том, как просмотреть (и, возможно, загрузить ) настройки из сохраненного двоичного файла.
don_crissti