Editing Manual backup and restore

Warning: You are not logged in. Your IP address will be recorded in this page's edit history.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 1: Line 1:
-
There are several scenarios where you might want to manually backup and restore your [[Nokia N900|N900]]. Using manual methods (as opposed to using osso-backup) is convenient for advanced users (to have more control over their phone), scheduling backups with fcron and the like, starting from scratch (if you want to wipe the phone and restore file-by-file) - because osso-backup can also backup problematic files.
+
= Manual Backup And Restore =
-
This was discussed at [http://talk.maemo.org/showthread.php?t=35037] and [http://talk.maemo.org/showthread.php?t=48488&page=2].
+
Imagine you've hacked around your tablet so much you want to back it up, wipe it clean and restore, rather than use the standard system backup/restore which could revert the problems too!
-
== Background ==
+
The best strategy is to back up the entire tablet, excluding only things you definitely don't need rather than try and cherry pick things, and then restore specific files and directories.
-
=== Connectivity ===
+
== Backing up the entire tablet ==
-
As the USB mass storage mode on the phone does not provide access to the root file system, some other way of transferring backups is required. Therefore, the first prerequisite is a working TCP/IP network between the phone and the target machine. Alternatively, a microSD card could be used.
+
The best program to use is "rsync" - this program is in the maemo extras repository. A suitable backup script is shown below, save it to /usr/local/bin/backup as a plain text file. You can then "chmod ugo+x /usr/local/bin/backup" and run it (as root please). Change "mypc.example.com" to the hostname (or IP address) of your computer, and the target directory from /home/archive/blahblah to /whatever. Note the "dpkg -l" to get a list of installed packages, this will help you remember what you had installed! The "gconf" bit lists out all the wifi access points defined so that you can copy/paste the details back in later.
-
=== Power ===
+
<pre>
-
 
+
-
We do not want our backups to drain the phone's battery, so we should only consider running the backup if we are connected to external power.
+
-
 
+
-
=== Automation ===
+
-
 
+
-
Once set up, the backups should happen automatically without intervention from the user, BUT complain loudly if they fail. This implies a script that we can schedule from cron that should perform whatever combination of tests and operations we may need. It also implies key-based access to our backup host.
+
-
 
+
-
=== Snapshots ===
+
-
 
+
-
At any given time we want a decent ability to backtrack, which means storing regular snapshots using something like rdiff-backup or rsnapshot.
+
-
 
+
-
So, what we've got so far is that we want to run a script on the N900 that tests whether we have external power (or dies), then tries to get a wireless connection to the backup server (or dies), then performs an incremental backup of the entire phone.
+
-
 
+
-
==Backup methods==
+
-
 
+
-
===Copying===
+
-
 
+
-
This script backs up contacts (database and also exports them with osso-addressbook-backup for safety), conversations, calendar, bookmarks, repository and packages list to external memory card's directory Backup which then contains subdirectories named with date and time when the backup was performed. The path is also definable. For example: "Memory_card/Backup/2010-03-03_00-00". It also displays notification during backup, because it was made to be used with [[fcron]].
+
-
 
+
-
====Script====
+
-
 
+
-
<source lang="bash">
+
#!/bin/sh
#!/bin/sh
-
path=/media/mmc1/Backup/`date +"%F_%H-%M"`
+
dpkg -l > /root/dpkg-l.txt
-
run-standalone.sh dbus-send --type=method_call --dest=org.freedesktop.Notifications /org/freedesktop/Notifications org.freedesktop.Notifications.SystemNoteInfoprint string:"Making backup..."
+
gconftool -R /system/osso/connectivity/IAP > /root/wifi-list.txt
-
 
+
-
mkdir -p "$path"/home/user/.bookmarks
+
-
mkdir    "$path"/home/user/.calendar
+
-
mkdir    "$path"/home/user/.osso-abook
+
-
mkdir    "$path"/home/user/.osso-abook-backup
+
-
mkdir    "$path"/home/user/MyDocs
+
-
mkdir -p "$path"/var/lib/hildon-application-manager
+
-
 
+
-
cp    /home/user/.bookmarks/MyBookmarks.xml*                "$path"/home/user/.bookmarks
+
-
cp    /home/user/.calendar/calendardb                      "$path"/home/user/.calendar
+
-
cp -r /home/user/.osso-abook/db                            "$path"/home/user/.osso-abook
+
-
cp -r /home/user/.osso-abook-backup/db                      "$path"/home/user/.osso-abook-backup
+
-
cp -r /home/user/.rtcom-eventlogger                        "$path"/home/user
+
-
cp -r /home/user/MyDocs/.documents                          "$path"/home/user/MyDocs
+
-
cp    /var/lib/hildon-application-manager/catalogues*      "$path"/var/lib/hildon-application-manager
+
-
cp    /var/lib/hildon-application-manager/packages.backup  "$path"/var/lib/hildon-application-manager
+
-
 
+
-
echo "osso-addressbook-backup -e "$path"/osso-addressbook-backup" | su - user
+
-
 
+
-
run-standalone.sh dbus-send --type=method_call --dest=org.freedesktop.Notifications /org/freedesktop/Notifications org.freedesktop.Notifications.SystemNoteInfoprint string:"Backup created"
+
-
</source>
+
-
 
+
-
===osso-backup (what is backed up by it)===
+
-
 
+
-
[[Documentation/Maemo 5 Developer Guide/Generic Platform Components/Using Backup Application|osso-backup]] is the default Backup application on the phone. You can use it for "manual" backup, because it produces standard .zip compressed files which can be opened on any system. The list of files that osso-backup backs up can be obtained by making a backup with it and opening these zip files (the list is too long for this wiki page).
+
-
 
+
-
===osso-addressbook-backup===
+
-
 
+
-
It is an executable which exports (or imports) address book to a vCard v3.0 format. It is used by osso-backup, but it can also be manually executed which is great for making a backup. You have to execute it as user "user".
+
-
 
+
-
osso-addressbook-backup -e /path/file
+
-
 
+
-
And if you're executing it from a root terminal:
+
-
 
+
-
echo "osso-addressbook-backup -e /path/file" | su - user
+
-
 
+
-
===rsync===
+
-
 
+
-
rsync is standard Linux/Unix file and directory synchronization tool. It is in extras repository. An example backup script is shown here:
+
-
 
+
-
====Script====
+
-
 
+
-
<source lang="bash">
+
-
#!/bin/sh
+
-
 
+
-
if [ `whoami` != "root" ]; then
+
-
echo "Please run as root to preserve file ownership."
+
-
exit 1
+
-
fi
+
-
 
+
-
dpkg -l > /root/dpkg.txt
+
-
dpkg --get-selections  > /root/dpkg-selections.txt
+
-
 
+
-
gconftool-2 -R /system/osso/connectivity/IAP > /root/iap.txt
+
rsync  -avz                    \
rsync  -avz                    \
-
        --numeric-ids          \
 
         --exclude=/dev          \
         --exclude=/dev          \
         --exclude=/media        \
         --exclude=/media        \
Line 100: Line 23:
         --exclude=/sys          \
         --exclude=/sys          \
         /                      \
         /                      \
-
         mypc.example.com:/home/archive/mytablet/
+
         mypc.example.com:/home/archive/20091121-mytablet/
-
</source>
+
</pre>
-
Change <code>mypc.example.com</code> to the IP/hostname of your computer and the target directory to whatever suits you. Don't forget to make the script executable and it must be run as root of course.
+
== Wiping Clean ==
-
The <code>dpkg -l</code> command makes a list of installed packages, <code>dpkg --get-selections</code> output can be passed directly to <code>--set-selections</code> to install/uninstall packages as they were on the device.
+
Wiping your table clean is achieved by reflashing. If you upgraded to your current version of maemo rather than flashing the latest version, you'll get a small performance boost by doing this. Flash according to [[Updating_the_tablet_firmware]].
-
Finally, gconftool-2 lists all internet access points (Wi-Fi and GPRS), so you can copypaste details back later.
 
-
==Automatic/periodic/scheduled backups==
+
== Restoring ==
-
Maemo currently does not provide an option to schedule backups nor does the osso-backup have interface to be run from command line and thus be scheduled. So the backup scripts needs to be written manually. You get them here (or you write your own), but to schedule them periodically you need fcron or similar. The scheduling part is covered in detail on [[fcron]] wiki page. With combining these two wiki pages you can have fully working automatic backups.
+
Backing up and reflashing were the easy parts, restoring takes a bit longer, and is a bit more tedious. This is where you should only restore things that were definitely properly working before you started, restoring broken configuration files is a bad idea!
-
==Wipe methods==
+
As well as reinstalling all the applications you want, you'll need to install (dropbear) ssh & sshd in order to copy the files back on. Be sure to set a password for user "user" and also probably root!
-
Wiping the device clean is achieved with reflashing. This is covered in the [[updating the firmware]] article and similar.
+
BTW, be sure not to be running the application which uses the files being restored!
-
==Restore methods==
+
=== wifi access points===
-
Restoring is the hardest part in this process and you need to have a little knowledge about your system, otherwise backup and restore rather with osso-backup. It is a good choice to perform a full backup after a successful setup/reflash/restore.
+
Although you'll have to manually re-enter the wifi access points, it's easier when you don't have to tediously type in WPA pass phrases as you can copy/paste then from the file created during the backup. Restore this file:
-
Restoring entries below were made by the author of the rsync backup script, but they are very similar to any restoring process. Also don't forget that the applications which use the files you are restoring need to be closed/stopped/killed.
+
<pre>
 +
cd /home/archive/20091121-mytablet/root
 +
scp -pr wifi-list.txt root@mytablet.example.com:
 +
</pre>
-
===Contacts===
+
Then view this file in a shell (install xterm, run it, "sudo becomeroot", "more wifi-list.txt" whilst setting up access to a wireless AP.
-
 
+
-
You need to create a dummy entry before restoring contacts. Run the contacts application first and create a contact, anything will do. Then exit the contacts application and restore the files in <code>/home/user/.osso-abook/db</code> and <code>/home/user/.osso-abook-backup/db</code>. The contacts will be restored after rebooting the device.
+
===Bookmarks===
===Bookmarks===
-
Close the browser first, then simply copy the files from your archive to the phone to <code>/home/user/.bookmarks</code>. The bookmarks should appear immediately.
+
Bookmarks are easy.
-
 
+
-
The bookmarks are saved in <code>MyBookmarks.xml</code> file, so this is the one that you really need, other files are thumbnails and the like.
+
-
 
+
-
===Calendar===
+
-
 
+
-
The calendar entries are in the file <code>/home/user/.calendar/calendardb</code>. A restart is required.
+
-
 
+
-
===Conversations===
+
-
The sqlite database containing SMS data is located at <code>/home/user/.rtcom-eventlogger/*</code>. Make sure rtcom-messaging-ui is closed. Conversations can be accessed as soon as the folder is restored.
+
-
 
+
-
===Repository and packages list===
+
-
 
+
-
These are located in <code>/var/lib/hildon-application-manager</code>, files <code>catalogues.backup</code>, <code>catalogues2.backup</code> and <code>packages.backup</code>. These can't be just copied back, because osso-backup uses them in its own way (asks which applications should be reinstalled), but you can use them as list of what you had installed.
+
-
 
+
-
===IM/Chat/SIP accounts===
+
-
These accounts are stored in <code>/var/lib/gconf/apps/telepathy/mc/accounts</code>. It's probably a good idea to set your presence to "off" before trying to restore.
+
Close the browser first, then simply copy them from your archive to the tablet thus:
 +
<pre>
 +
cd /home/archive/20091121-mytablet/home/.bookmarks
 +
scp -pr * user@mytablet.example.com:/home/user/.bookmarks
 +
</pre>
-
===E-mail (Modest)===
+
The bookmarks should appear straight away.
-
Restoring <code>/home/users/.modest</code> and <code>/var/lib/gconf/apps/modest</code> doesn't work properly. I had to create the email server settings, but at least the old email did come back. Actually, I think it might have worked, but the mailbox didn't appear. I discovered that the old mailboxes were there when I looked for them in Menu->View and chose one of the mailboxes.
+
===rss feeds===
-
The rabbit hole goes deeper. I didn't notice there was a problem after restoring, as I use a special email address for my tablet and it didn't get any email for a while, so I was quite happy accessing my recovered emails. When a new email arrived, it killed modest, and I was unable to restart it - the UI would show up briefly before modest died. The only way I could make modest run without crashing was to rename <code>/home/user/.modest</code> to <code>/home/user/.modest.xxx</code>.
+
The RSS feeds are stored as a bunch of files, very easy to restore.
-
===RSS Feeds===
+
Close rss reader. Copy the files back thus:
-
Close RSS application and copy files to <code>/home/user/.osso_rss_feed_reader</code>.
+
<pre>
 +
cd /home/archive/20091121-mytablet/home/.osso_rss_feed_reader
 +
scp -pr * user@mytablet.example.com:/home/user/.osso_rss_feed_reader
 +
</pre>
-
===Wi-Fi and GPRS access points===
+
===gPodder===
-
You'll have to manually re-enter them, but you can copypaste details from the file created with rsync backup script (iap.txt).
+
Close gpodder. Copy the gpodder config directory back thus:
-
===Other===
+
<pre>
 +
cd /home/archive/20091121-mytablet/home/.config/gpodder
 +
scp -pr * user@mytablet.example.com:/home/user/.config/gpodder
 +
</pre>
-
====gPodder====
+
Since gpodder keeps the downloaded podcast audio files on memory card, they should be available immediately.
-
Close gPodder and copy its config directory to <code>/home/user/.config/gpodder</code>.
 
-
====OpenVPN Applet====
 
-
If you use the [[OpenVPN]] Applet the configuration files are stored in <code>/etc/openvpn</code>. After you copy them be sure to have them owned by user "root", group "root", and protected so that user (root) has rw privileges, and no one else has anything.
+
[[Category:Users]]
 +
[[Category:Connectivity]]
[[Category:Power users]]
[[Category:Power users]]
-
[[Category:N900]]
 

Learn more about Contributing to the wiki.


Please note that all contributions to maemo.org wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see maemo.org wiki:Copyrights for details). Do not submit copyrighted work without permission!


Cancel | Editing help (opens in new window)