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:
- Before upgrading:
- After upgrading:
- Restore apps, data, settings and configuration, as needed.
- 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 🙂 .
~ $ 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
This is still how I do it, with some changes.
I’ll probably write updated posts some day.
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.
With everything important backed up safely, I am now ready to proceed with factory resetting my Nexus 5, and upgrading it to Lollipop.