ฉันจะดูเนื้อหาของข้อมูลสำรองของไฟล์ฐานข้อมูล dconf ได้อย่างไร?


20

ฉันได้ทำการสำรองข้อมูลของไฟล์ที่dconfจัดเก็บฐานข้อมูลของฉัน( ~/.config/dconf/userซึ่งเป็นไฟล์ไบนารี) และตอนนี้ฉันต้องย้ายคีย์บางอย่างจากการสำรองข้อมูลไปยังการdconfใช้งาน

ฉันจะดูเนื้อหาของการสำรองข้อมูลdconfโดยไม่ต้องใส่ "ใน" และดูด้วยเช่นdconf-editor?

คำตอบ:


25

หากต้องการดูเนื้อหาของไฟล์คุณสามารถเปลี่ยนชื่อไฟล์ได้เช่นtestวางไว้ใต้~/.config/dconf/แล้วdconfอ่าน / ถ่ายโอนข้อมูลการตั้งค่าจากไฟล์นั้น
โดยค่าเริ่มต้น , dconfอ่านใช้ฐานข้อมูลที่พบใน$XDG_CONFIG_HOME/dconf/:

"user-db"บรรทัดระบุฐานข้อมูลผู้ใช้ ฐานข้อมูลเหล่านี้จะพบใน
$XDG_CONFIG_HOME/dconf/ชื่อของไฟล์ที่จะเปิดในไดเรกทอรีนั้นตรงตามที่เขียนไว้ในโปรไฟล์ ไฟล์นี้คาดว่าจะอยู่ในรูปแบบฐานข้อมูลไบนารี dconf โปรดทราบว่า XDG_CONFIG_HOMEไม่สามารถตั้งค่า / แก้ไขต่อเทอร์มินัลหรือเซสชันเนื่องจากตัวเขียนและตัวอ่านจะทำงานบนฐานข้อมูลที่แตกต่างกัน (ตัวเขียนเริ่มต้นโดย DBus และไม่เห็นตัวแปรนั้น)

ดังนั้นคุณจะต้องมีโปรไฟล์ที่กำหนดเองซึ่งชี้ไปที่ไฟล์ db เฉพาะ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-files ที่สร้างโดยเวอร์ชันที่แตกต่างกันdconfจะไม่รับประกันเสมอไป ในกรณีนี้คุณจะต้องตรวจสอบold_settingsไฟล์ผลลัพธ์และลบหรือแก้ไขรายการที่ไม่ถูกต้องด้วยตนเองก่อนที่จะโหลดลงในฐานข้อมูลปัจจุบันของคุณ


17
WTF? ใครเป็นคนรับผิดชอบเรื่องความยุ่งเหยิงนี้และใครควรจะถูกตีเพราะสิ่งนี้? (แต่: ขอบคุณมากสำหรับข้อมูลนี้มันช่วยฉันด้วย)
Tino

1
@Tino gnome devs ฉันเชื่อว่า :) แต่ควรมีเครื่องมือส่วนหน้า
Anwar

ผู้มีส่วนร่วมแสดงอยู่ที่gitlab.gnome.org/GNOME/dconf/graphs/master
Ben Creasy

ฉันคิดว่าการอ่านไม่ใช่ปัญหา เพียงตั้งXDG_CONFIG_HOMEเป็นไดเรกทอรีอื่น ไม่จำเป็นต้องมีโปรไฟล์ของวิเศษ แต่การเขียนไปยังไฟล์ dconf ตามอำเภอใจนั้นยากและอาจทำให้โปรไฟล์ของคุณจำเป็น
Torsten Bronger

-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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.