Backing up Android with BitTorrent Sync and TitaniumBackup

With BitTorrent Sync being available on Android, this means you can simply and securely make a backup of your Android device to your home computer using Titanium Backup and BitTorrent Sync from anywhere. The beauty of this method is that there's no middleman you need to trust with your data as it's encrypted from end-to-end.

To follow this guide, you'll need to install Titanium Backup and BitTorrent Sync on your Android device and BitTorrent Sync on your computer.

Photo Backup

BitTorrent Sync makes photo backup a trivial process. Simply launch the BitTorrent Sync app and select the BACKUP tab. Tap the add folder button and select the DCIM folder from your sdcard. Make note of the secret key that is generated.

Now, from the BitTorrent Sync client on your computer, add a new sync folder using the secret key generated on your phone and a location for the backup on your computer. Once complete, your devices should connect and being transferring data.

Note that, by default, BitTorrent Sync will not backup over cellular data, but that can be changed in the settings if you have the data available to do so.

App Backup with Titanium Backup

Note that Titanium Backup requires root to run.

  1. Setup Scheduled Backups in Titanium Backup

    In order to keep an updated backup, you need to enable scheduled backups in Titanium Backup. There are two profiles that come pre-setup with Titanium; one that backups new apps, and one that checks for changed data in previously backed up apps. The defaults are reasonable, but I like to update them to run more frequently. I set the modified data check to run daily and the new app check twice a week (Wed and Sun).

    Check to enable both scheduled backups.

  2. Setup BitTorrent Sync on Your Phone

    Just like with photos, you'll want to add a new folder to the BACKUP tab in BitTorrent Sync. The directory you want to add can be found in the Overview tab of Titanium Backup. The entry you're looking for is "Backup directory". It should be something like "/storage/emulated/0/TitaniumBackup". Make note of the secret key generated on the phone.

  3. Setup BitTorrent Sync on Your Computer

    Again, from the BitTorrent Client on your PC, add a new folder using the secret key from your phone. The devices will connect and you're on your way to having a backup of all the apps on your Android phone.

Notes

  • In order to have a continual backup, your computer will need to be on all the time. If that's a problem, you might benefit from a Raspberry Pi + BitTorrent Sync setup.
  • By default BitTorrent Sync only backups over Wifi, this is probably what you want, but it can be changed if you have the data available on your cell plan.

Secure File Syncing

This is a follow up to my previous post Single Point of Failure, where I detailed my switch to self-hosted/distributed alternatives to various Google services so I wasn't completely reliant on one provider. At the time I didn't cover file syncing, since Dropbox was doing a fine job for me. However, for a couple of reasons, one being that the Dropbox Linux client is significantly slowing down my system, I've decided to move to a different tool. Conveniently, with the recent NSA Prism revelations, secure distributed alternatives to tools like Dropbox have been enjoying a lot of exposure, so it's been easy to find good alternatives.

The two tools that I'm now using are:

  1. Git Annex + Git Annex Assistant
  2. BitTorrent Sync

Both are really promising, but for different reasons.

Git Annex

Git Annex offers the ability to distribute files across many locations and uses Git to keep track of the location(s) any given file is available from. It also gives you the ability to recall a file from a remote location to your current device. This is really powerful for managing a large amount of data when you don't have room for it all on one machine.

The assistant functionality automates the syncing between repositories. It has a nice webapp which provides a GUI for managing remotes and sync strategies. These remotes can be additional git repositories, encrypted rsync destinations, local drives, EC2, and more. The assistant is still under active development, so it's not 100% stable or feature-complete, but it's definitely usable and the underlying functionality is pretty solid.

At the time of writing (July 20th) there's a crowd-funding campaign going on to support another year of full time development on git annex. If you want to support a good open source project, head ond over and contribute a few bucks (or bitcoins.)

BitTorrent Sync

BitTorrent Sync is the second tool I'm using for file syncing. It's much less complex then Git Annex. It's all about keeping folders in sync across multiple systems. The setup is pretty simple:

  1. Add a folder to the client and generate a unique secret key.
  2. From any other computer, choose a folder and give it the secret key.
  3. Let the computers auto-discover each other, or specify an address.

BitTorrent Sync has clients for all the major desktop operating systems and an Android app.

What to use?

For the time being, I'm going to use both. I'm trying out Git Annex as a central store for anything I care about. Using it, I can setup a backup with the encrypted rsync remote as well as directly sync when I need to my different computers on an as-needed basis. This allows me to track all my old projects and miscellany in a single place.

BitTorrent Sync is going to handle more transient syncing needs. This includes things like my workspace and desktop wallpaper collection since they're ever changing and could be rebuilt from scratch if really necessary.

Web Access

In addition to the two syncing services listed above, I also have ajaxplorer setup on a remote VM and pointed at a BitTorrent Sync folder setup on the VM. This allows me to make files available when I'm on the road, at work or don't have access to a trusted machine with the client installed.

Further Reading

Single Point of Failure

Why I no longer use Google for everything

Periodically a story makes the top of Hacker News about someone who's just had their Google account disabled. Every time I read those stories, I think through what would happen if my account got disabled, and as you might imagine, it wouldn't go well for me, since I don't have any good friends who are Google employees who could bail me out.

I don't have any problem with what Google's doing, and I still intend to use some of their services, but it has become a massive single point of failure for me, and I don't have any recourse if something happens, since Google has no support.

I've decided to fix that by switching to separate providers for the services I depend on. Here's the breakdown of what I'm switching and what I'm keeping.

Switching

Email

This is the most important service I'm switching, since it's what I use and depend on the most. I've tried a number of alternatives, and I've decided to go with Fastmail, since they support custom domains, IMAP, SMTP, and have a nice web interface. It's also not expensive for 10GB of space at $40/year (or $32/year if you prepay 5 years). Fortunately, I've been using my own domain with Google Apps, so this switch will be completely seamless for everyone I communicate with.

Email Clients

As a side effect of dropping Gmail, I also needed to switch mail clients on my Android and iOS devices. The key feature I need in a mail client is identites, since I send mail from my custom domain, not the Fastmail account username. On iOS, this is simple, since the native mail client supports sending from a different email address.

Android however, does not support this in the native Mail application, so I had to find a good alternative. The one I ended up with is Kaiten Mail, which is excellent and well worth the $5. It has support for Identities, archiving mail and a plethora of customization options. My only gripe with it is the icon, which looks a lot like a trash can.

Contacts and Calendar

While Fastmail does provide contacts, they don't offer CardDAV syncing, which makes them unavailable on Android and iOS. My solution is to use a separate service, a self-hosted instance of Kolab for both Contacts and Calendar. This works with iOS and Android, since it has support for ActiveSync. It also has a very solid web interface for managing both.

I've also been experimenting with ownCloud's Calendar and Contacts, but I'm unimpressed with their web interface and I probably won't keep it. The main reason I'm trying it is the CardDAV and CalDAV support, since those protocols work well across all platforms, desktop and mobile. Kolab has announnced support for both in the next version, so I think it's still the better choice.

CalDAV/CardDAV Support (Mobile)

This is mostly for my own reference once Kolab has support for CardDAV and CalDAV - iOS has native support, Android does not, but there are good sync adapters available from Google Play for both - CardDAV-Sync ($2) and CalDAV-Sync ($2) which both support 2-way syncing.

Reader

I've been largely off of Reader for a while, since it's been obvious Google didn't care about it. The only place I still use it is on iOS, since it's the only service my favorite RSS reader (Byline) syncs with. Other than iOS, I've moved all my feeds over to both NewsBlur and Feedly, and have been alternating between the two. I'm waiting for the dust to settle after Reader shuts down to decide which I'll stick with.

Music

I'm setting up ownCloud to replace this as well. I'm using ownCloud's file sync to move Music up to a server and then for playback I'll use a separate tool (ownCloud has a built in music player, but it doesn't have many features for filtering albums or artists.) My intention is to setup, Ampache, Subsonic, Jinzora or something else on the server to use for playback and streaming.

This is an area where I might end up back with Google, since nothing I've tried has been very good and I also have everything in Amazon's CloudPlayer, so it's not really a single point of failure for me.

Keeping

Voice

I haven't found a good alternative to Google Voice; SendHub is close, but it's missing a number of key features like SMS to email and at $25/month for 500 minutes it's a little expensive on top of a cell phone bill. My current plan is to start experimenting with the Twilio API to see if I can duplicate the most important features of Google Voice myself.

Docs / Drive

I don't use Docs enough to merit finding an alternative and I already use Dropbox for syncing.

Search

Google still has the best search engine. It's also not strongly tied to my account, so I don't have to worry about losing data.

Summary

I have a few final thoughts on this process:

  1. Google's great on the wallet

    Google's offerings are free, which is really hard to beat if you're trying to be economical. However, that comes at the cost of no support. Now that I'm out of college and have an income, but less time, I'm willing to pay for support and the assurance a service isn't going away.

  2. Google's/Microsoft's/Yahoo's/etc... free offerings suffocate markets

    Looking around for good alternatives to products Google or Microsoft offer for free is really hard. There's no really good open solutions for online calendaring, or, until the recently announed death of Reader, RSS readers. Nobody wants to compete with Google.

  3. Rent a dedicated server

    Nothing gives you more flexibility than having a big beefy dedicated server to run VMs on. When I want to test a new tool, all I have to do is clone a template VM and install it. If I like it, I keep the VM, if not, I delete or archive it and move on.

That's my experience switching from Google. If you have suggestions for good alternatives I'd love to hear about them. Feel free to post a comment or tweet @justjohn.