How to Mozilla Firefox Restore and Backup bookmarks database

พาทดีฟอลต์ Mozilla Firefox (profile directory)

~/.mozilla/firefox/xxxxx.default/

xxxxx คือ randomly-generated เมื่อเราสร้างโปรไฟล์ขึ้นมาใหม่

กระบวนการทำงาน

เมื่อเราเพิ่ม bookmark หรือ import bookmark ไฟล์รูปแบบ JSON format ข้อมูลจะถูกเก็บลงฐานข้อมูลชื่อ places.sqlite ใน table ชื่อ moz_bookmarks

ตัวอย่างไฟล์ เช่น

~/.mozilla/firefox/ckqoau30.default/bookmarkbackups/bookmarks-2013-06-20.json

[สำหรับผู้ใช้ทั่วไป] วิธีสำรอง Bookmarks ในรูปแบบ JSON format (แบบ manual)

ขั้นตอน:-

– เปิด Firefox > all bookmarks (shift+ctrl+o)

– คลิกเลือก ‘Import and Backup’ option (alt+i)

– คลิกเลือกออบชั่น ‘Restore’ หรือ ‘Backup’

– เลือกไฟล์ที่ต้องการ restore เช่น bookmarks-2013-06-20.json

[สำหรับผู้ดูแลระบบ] การเข้าดูข้อมูลในฐานข้อมูล places.sqlite ใน table ชื่อ moz_bookmarks ด้วย command line อินเทอร์เฟส sqlite (ต้องติดตั้งแพ็กเก็จ sqlite3)

เข้าสู้ database

sqlite3 places.sqlite

ตรวจสอบ default path

sqlite> .databases

แสดงรายชื่อตารางทั้งหมด

sqlite> .tables

moz_anno_attributes moz_favicons moz_items_annos
moz_annos moz_historyvisits moz_keywords
moz_bookmarks moz_hosts moz_places
moz_bookmarks_roots moz_inputhistory

ออกจาก sqlite โปรแกรม

sqlite> .quit

คำสั่ง dump ตารางชื่อ moz_bookmarks (Dump the database in an SQL text format)

sqlite> .dump moz_bookmarks

การ Backup และ Restore ไฟล์ฐานข้อมูล places.sqlite ด้วย command line

Backup:

sqlite> .restore /backup/firefox/places.sqlite

Restore:

sqlite> .backup /backup/firefox/places.sqlite

(ปกติ Mozilla Firefox ทำการสำรองอัตโนมัติอยู่แล้ว มีการสำรอง bookmarks ทุกวัน)

หรือจะใช้รูปแบบนี้

sqlite3 /root/.mozilla/firefox/ckqoau30.default/places.sqlite ".backup /backup/firefox/places.sqlite.20130620"

การสำรองไฟล์ bookmark แบบไม่ต้องพึ่ง sqlite

cp $(find ~/.mozilla/firefox/ckqoau30.default/bookmarkbackups | sort | tail -n1) /backup/path/to/directory

หลังจากที่รู้ขั้นตอนทำงานแล้ว เรามาทราบถึงปัญหาที่เกิดขึ้นกันครับ :-
ปัญหาที่เกิดขึ้นคือผู้ใช้ไม่สามารถ import ไฟล์ bookmark เองได้ ถึงแม้จะรีสตาร์เครื่องแล้ว เนื่องจากเป็นได้ว่า lock ฐานข้อมูล
ในการแก้ไขปัญหาที่ง่ายที่สุดคือ สร้างโปรไฟล์ Firefox ใหม่ เมื่อเปิดใช้งาน Firefox ก็จะมีฐานข้อมูล places.sqlite ใหม่ หรือลบไฟล์ฐานข้อมูลเก่าทิ้งไปเลย

การสร้างโปรไฟล์ใหม่
แล้วเข้าไปที่ Firefox profile directory ให้ rename ไดร์เรกทอรีชื่อ .mozilla เป็น .mozilla-old
หรือใช้คำสั่งบน terminal พิมพ์ว่า

mv ~/.mozilla ~/.mozilla.old

จากนั้นก็ทำการ import ใน GNOME ผู้ใช้ต้องเลือกออบชั่นโชว์ hidden file ก่อนถึงจะเห็นชื่อไดร์เรกทอรี (.mozilla-old) แล้ว brows ไปยังไฟล์เพื่อ restore bookmark ล่าสุดกลับคืนมา
อ่านวิธี restore bookmark ตามหัวข้อด้านบนซึ่งเป็นวิธีที่ง่ายที่สุด [เหมาะสำหรับผู้ใช้ทั่วไป] วิธีสำรอง Bookmarks ในรูปแบบ JSON format (แบบ manual)

แต่วิธีการที่กล่าวมายังดูค่อนข้างย่งยากสำหรับผู้ใช้อยู่ วิธีถัดมาคือทำให้ง่ายกว่านั้นขึ้นมาหน่อย (คลิก 1 ครั้งเสร็จเลย)

การเขียนสคริปต์กู้ข้อมูล bookmark โดยทำโปรแกรมยูทิลิตี้ให้ใช้งานบน GNOME ได้ (คล้ายกับสคริปต์ Fix Firefox ลองค้นหาดูในบอร์ด)

find $HOME/.mozilla/firefox -name ".parentlock" -exec rm {} \;
firefox

หรือถ้าระบบมีการทำ daily backup อยู่แล้ว ก็ให้ใช้วิธี restore ไฟล์ places.sqlite ด้วย sqlite3 ได้เลย
ไม่ก็เขียนสคริปต์ cleaning history (GitHub)