Jak mogę wyświetlić zawartość kopii zapasowej pliku bazy danych dconf?

20

Zrobiłem kopię zapasową pliku, w którym dconfprzechowywana jest moja baza danych ( ~/.config/dconf/userktóry jest plikiem binarnym), a teraz muszę przenieść niektóre klucze z kopii zapasowej do dconfużywanego.

Jak wyświetlić zawartość kopii zapasowej dconfbez umieszczania jej „na miejscu” i przeglądać na przykład za pomocą dconf-editor?

PetaspeedBeaver
źródło

Odpowiedzi:

25

Aby wyświetlić zawartość tego pliku, możesz zmienić jego nazwę - np. test- umieścić go pod, ~/.config/dconf/a następnie dconfodczytać / zrzucić ustawienia z tego pliku.
Domyślnie , dconfczyta użytkownik-db znaleźć w $XDG_CONFIG_HOME/dconf/:

"user-db"Linia określa bazę danych użytkownika.
Te bazy danych znajdują się w $XDG_CONFIG_HOME/dconf/. Nazwa pliku do otwarcia w tym katalogu jest dokładnie taka, jak zapisana w profilu. Ten plik ma być w formacie binarnej bazy danych dconf. Zauważ, że XDG_CONFIG_HOMEnie można ustawić / zmodyfikować dla terminala lub sesji, ponieważ wtedy program piszący i czytnik działałyby na różnych bazach danych (program piszący jest uruchamiany przez DBus i nie widzi tej zmiennej).

W rezultacie potrzebujesz niestandardowego profilu, który wskazuje na ten konkretny plik db - np. user-db:testA następnie poinstruuj, dconfaby zrzucić dane (używając niestandardowego profilu) za pomocą DCONF_PROFILEzmiennej środowiskowej:

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

Wynikiem jest plik ( old_settings) zawierający ustawienia z dconfpliku kopii zapasowej , np .:

[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'

.......

Następnie możesz usunąć te pliki:

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

i załaduj stare ustawienia do bieżącej bazy danych:

dconf load / < old_settings

Jeśli chcesz zrzucić tylko określone ustawienia, podaj ścieżkę:

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

ale pamiętaj, że dla każdej ścieżki powinieneś mieć inny plik, a kiedy go załadujesz, powinieneś odpowiednio określić ścieżkę:

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

Należy również pamiętać, że z powodu zmian w górę, starsze dconfbazy danych mogą zawierać ścieżki, klucze i wartości, które są nieprawidłowe w nowszych wersjach, więc dconfnie jest zawsze zagwarantowana pełna kompatybilność między plikami db utworzonymi przez różne wersje . W takim przypadku należy sprawdzić old_settingsplik wynikowy i ręcznie usunąć lub edytować niepoprawne wpisy przed załadowaniem go do bieżącej bazy danych.

don_crissti
źródło
17
WTF? Kto jest odpowiedzialny za ten bałagan i kto powinien być z tego powodu pobity? (Ale: Dziękuję bardzo za te informacje, również mi pomogło.)
Tino
1
@Tino gnome devs Wierzę :) Ale powinny być jakieś narzędzia front-end
Anwar
Współpracownicy są pokazywani na gitlab.gnome.org/GNOME/dconf/graphs/master
Ben Creasy
Myślę, że czytanie nie stanowi problemu. Wystarczy ustawić XDG_CONFIG_HOMEw innym katalogu. Magia profilowa nie jest potrzebna. Ale zapisanie do dowolnego pliku dconf jest trudne i może sprawić, że Twój profil będzie trudny.
Torsten Bronger
-1

Myślę, że pierwsza odpowiedź zbyt skomplikowała sprawę, więc spróbujmy ponownie, używając /org/cinnamon/jako przykładowej przestrzeni nazw do tworzenia kopii zapasowych i przywracania:

Aby wykonać kopię zapasową / org / cynamon /:

Z terminala uruchom:

dconf dump /org/cinnamon/ > backup_of_my_cinnamon_settings

zapisz backup_of_my_cinnamon_settingsplik gdzieś na później

Aby zresetować / org / cynamon / do ustawień domyślnych:

dconf reset -f /org/cinnamon/

Uwaga: cynamon może się zamrozić lub ulec awarii

Aby przywrócić wszystkie ustawienia / org / cynamon:

dconf load /org/cinnamon/ < backup_of_my_cinnamon_settings


Proces byłby taki sam dla /org/gnome/terminal/itd.

Aby uzyskać najlepsze wyniki, aktualizuj odwołania do aplikacji, gdy nie są uruchomione.

Dzięki dokumentom z cynamonu za wskazówki.

Mark Stosberg
źródło
3
Myślę, że powinieneś spróbować ponownie: pytanie nie dotyczy tego, jak wykonać kopię zapasową i przywrócić niektóre ustawienia, ale jak wyświetlić (i być może załadować ) ustawienia z zapisanego pliku binarnego .
don_crissti