Preparing My Nexus 5 For Lollipop: Data Backup

I love a clean start. There’s nothing like the feel of a smartphone (or PC) after a factory reset.

I’m using my Nexus 5 for almost a year now. For a while, I’ve been wanting to do a factory reset and start clean. The upcoming Lollipop upgrade is exactly the push I needed to do it.

My game plan:

  1. Before upgrading:
    1. Perform general app cleanup, so I upgrade only with the apps I want.
    2. Document my settings and configuration (system and apps), so I can re-apply it if needed.
    3. Backup data.
  2. Upgrade.
  3. After upgrading:
    1. Restore apps, data, settings and configuration, as needed.
    2. Explore what new built-in features can replace 3rd party apps I’m using. I always prefer built-in over 3rd party.

I have lots of data on the sdcard. My Nexus 5 is the 32GB model, and before going through with factory reset & upgrade, I have about 24GB used. In this post, I describe what I backup, and how I get it off the sdcard over to my MacBook.

I performed this backup procedure right before going through with the upgrade, so the backup is as up-to-date as possible.

What to backup

A naive approach would be to just copy everything from the sdcard over to a computer. Just plug the phone via USB, open the mounted folder, and copy away.

This isn’t good enough (at least for me).

Another potential approach is to use a specialized backup app (like Titanium Backup) to “backup everything” (including apps and their data). This would be better than a naive copy, but not suitable for this specific scenario, for a couple of reasons:

  • I want to start as-fresh-as-possible, so I don’t necessarily want to restore the apps “as they were”. I just want to restore selected data and configuration.
  • Moving from KitKat to Lollipop entails a switch from Dalvik to ART. I don’t want to risk incompatibilities related to that.
  • I didn’t root my Nexus 5, so I can’t really perform a “deep-enough” backup.

Lets get a little more specific on what I really want to backup here:

  • My local music library.
  • Downloaded BeyondPod podcasts.
  • Images and videos (from camera, and screenshots).
  • SMS messages.
  • Call logs.
  • WhatsApp conversations, wallpapers, and media.
  • Open Chrome tabs.
  • Various exported settings.

I explicitly don’t want to backup various things that are cloud-sync’ed (Hangouts conversations, Feedly subscriptions and read status, Pocket library, Bookmarks, Emails, Google Drive, etc.). Backing up these would be redundant (and probably difficult, if not impossible).

How to backup

Different types of data require differnt backup techniques.

Local music library

This is easy. Simple copy-to-computer is appropriate here 🙂 .

I have adb from the Android Developer Tools, and I enabled USB debugging, so I used adb to do the copy. I think it’s faster than copying via a mounted sdcard. Not sure though.

~ $ mkdir -p Nexus5-backup/Music
~ $ cd $_
Music $ adb pull -p -a /storage/emulated/0/Music
...
... long time ...
...
1456 files pulled. 0 files skipped.
3829 KB/s (8725483803 bytes in 2225.380s)

Downloaded Podcast episodes

Also easy. The episodes are saved in /storage/emulated/0/BeyondPod/Podcasts. So same copy as with the music library above.

Images and Videos

Even easier! I use Dropbox camera upload, so this should already be in Dropbox.

I use the Dropbox camera upload feature mainly because photos and videos accumulate quickly (especially with babies), so I regularly empty the camera directory after verifying that everything is indeed uploaded.

All I need to do here is another session of this camera cleanup.

SMS messages and Call logs

I described how I schedule SMS backup and Call logs backup two years ago.

This is still how I do it, with some changes.

Instead of relying on the “cloud upload” feature of these apps (which is still partial..), I use FodlerSync to upload the backups to my Box account.

I’ll probably write updated posts some day.

WhatsApp data

WhatsApp have an FAQ on moving chat history on Android.

I initiated a conversations backup from the app settings:

This updated the backup in /storage/emulated/0/WhatsApp, which I copied off the sdcard with adb.

Open Chrome tabs

Actually, I forgot to do that… Luckily, Chrome has “Recent tabs” 🙂 .

Various exported settings

When I documented settings and configuration, some apps had a helpful “export settings” feature (like Tasker, BeyondPod, Poweramp, etc.).

In some cases, I was able to choose the destination for the export file. In these cases I chose sdcard/Backups/apps, which also gets backed up to Box with FolderSync, which is a nice bonus.

In other cases, the app did not let me choose destination (like Tasker, and Yatse).

To account for that, and be extra safe, I also copied the entire content of the sdcard with adb:

~ $ mkdir -p Nexus5-backup/sdcard
~ $ cd $_
sdcard $ adb pull -p -a /storage/emulated/legacy/
...
... long time ...
...
pull: /storage/emulated/legacy/Audible/.finished/BK_SANS_006646.finished -> ./Audible/.finished/BK_SANS_006646.finished
pull: /storage/emulated/legacy/Audible/.playback_position/B00ICRLMWI_ep5.pos -> ./Audible/.playback_position/B00ICRLMWI_ep5.pos
pull: /storage/emulated/legacy/Audible/.lph/B00ICRLMWI.lph.server -> ./Audible/.lph/B00ICRLMWI.lph.server
pull: /storage/emulated/legacy/Audible/B00ICRLMWI_ep5.aax -> ./Audible/B00ICRLMWI_ep5.aax
pull: /storage/emulated/legacy/Audible/.asinsToProductID.ser -> ./Audible/.asinsToProductID.ser
pull: /storage/emulated/legacy/Audible/AudibleActivation.sys -> ./Audible/AudibleActivation.sys
pull: /storage/emulated/legacy/Audible/.lastAcitityStarted.ser -> ./Audible/.lastAcitityStarted.ser
pull: /storage/emulated/legacy/Audible/.downloadManager.ser -> ./Audible/.downloadManager.ser
pull: /storage/emulated/legacy/Audible/Audible.log -> ./Audible/Audible.log
pull: /storage/emulated/legacy/HabitBull/HabitBullData.csv -> ./HabitBull/HabitBullData.csv
pull: /storage/emulated/legacy/Trigger/Backup.json -> ./Trigger/Backup.json
pull: /storage/emulated/legacy/Yatse.settings -> ./Yatse.settings
pull: /storage/emulated/legacy/.bugsense -> ./.bugsense
pull: /storage/emulated/legacy/.enref -> ./.enref
23500 files pulled. 0 files skipped.
3829 KB/s (16238533507 bytes in 4140.697s)

Yes, I ended up with two copies of the music library and downloaded podcasts. CBA.

Summary

With everything important backed up safely, I am now ready to proceed with factory resetting my Nexus 5, and upgrading it to Lollipop.

No Comments Yet.

Leave a Reply