Recently I was asked how I do backups of my mobile devices. The discussion started when I told that I “survived” a bricked device without data loss.
Disclaimer: I work (well, was working, before we got spinned of into a subsidiary) for EMC. Part of EMCs portfolio is “backup” and for sure I learned a lot from my employer. All my own devices and servers are backed up, some of them multiple times. Backups, devices and communication is encrypted. I’m not using public services (Dropbox, Google Drive, …) for the backups.
So, what happened? One Friday afternoon, my Samsung S3 bricked itself. It was connected to the charger on my desk, the display flashed for a moment and then the device was dead. Reset, reboot, remove battery - nothing helped. No access to the data on the device.
Fortunately I have automated backups. The S3 was rooted and running CyanogenMod. Every night, Titanium Backup (I’m using the full version, totally worth the money) runs an incremental backup of all apps and their data. Every Sunday night, it runs a new full backup. The backups are encrypted and the last 10 backups are stored on the external(!) SDcard. So far for the backups …
About one hour later, Tasker (a tool which allows a broad range of automation) kicks in and starts several rsync jobs. Whenever Tasker detects that I’m at home (it does this by finding my wifi SSID - Tasker can be scheduled to start jobs on predefined conditions), it rsyncs the backups to a NAS. rsync is configured in a way which deletes files on the NAS when they are deleted on the device. Another rsync job syncs the full content of the internal SDcard to the NAS. Yet another job syncs all pictures, however this job does not delete files on the NAS - when I accidentally delete a file on the mobile device, I still have a backup on the NAS.
I have several more rsync jobs defined, which copy data/files to other backup targets on the internet. However Tasker has no way to determine if the current used internet connection is fast or slow or maybe is a hotspot provided by another mobile device - in short: it cannot determine if it’s safe to sync a huge amount of data or if this will cost money. These jobs I kick off manually from time to time.
All backup targets are servers using a chroot environments (mostly created using a nice tool called “makejail"),
rsync is using
ssh keys. If someone get’s his hands on the
ssh key for one mobile device, all he can do is access the backups for this device (something he already has access to on the device itself).
So what happened said Friday? After finding out that the device is irrevocable dead, I copied the last backup to my laptop. We were about to leave home and visit relatives. Most annoying: I’m heavily using my mobile as a to-do list, to keep track of all the things I have to do. Cannot really work without access to my to-do list. A quick online check revealed that it’s a known problem what happened to my S3. Web forums are full of threads describing the problem - but no helpful answer how to recover from this situation.
Next day I walked into a shop and bought a new S3. For a while I pondered bying a newer device, however it was impossible to buy any of the other two devices on my list in a small city like Siegburg, without a contract, on a Saturday. Then it took me 4 hours to download the latest CyanogenMod version - the mobile data coverage is really really bad where our relatives live. After this, and another two hours for installation and restore of all apps and data, the new S3 was up and running with the same data as on the bricked device.
The old device is on warranty, so I sent it in and about two weeks later I got it back: working, but factory reset. I reinstalled this one with CyanogenMod as well, and someone else is now a happy owner of an almost new S3 ;-)