Advertisement

How to backup your Mac App Store apps

The excellent ReadNow application, which allows you to easily read articles from your Instapaper and Read It Later articles on your Mac, has been pulled from the Mac App Store "...because of an infringement letter." Developer Michael Schneider added "[i]n my current situation I'm not allowed to provide any further information."

The good news is that if you have already purchased the app, you can still download it from the "Purchases" tab in the App Store.app even though the iTunes page for ReadNow now leads to the message, "Your request could not be completed."

However, as I waited for the Mac App Store to load on my iMac this morning, I found myself wondering "What would I do if I couldn't re-download it from the Mac App Store?"

Fortunately I have the app on my MacBook Air, so I could go to /Applications/ReadNow.app and then select File » Compress "Read Now" (or control+click the app and choose "Compress" from the menu).

Terminal option

If you wanted to make a copy of ReadNow (or any app) on the command line, I believe that your best option is using ditto like this:

sudo ditto -v --keepParent -kc ReadNow.app ReadNow.zip

(I don't claim to be a ditto expert, but I can tell you that worked for me. The -k option tells ditto to make zip archives. The --rsrc --extattr and --qtn options are all the default, so they don't need to be explicitly specified.)

I then copied the 'ReadNow.zip' file to my Dropbox so I would have it, just in case Apple removes the option to download it.

This should work for all Mac App Store apps (Xcode and "Install Lion" excepted), but may not work for other apps which use an installer and may install other files besides the ones in /Applications/.

Show me all of my Mac App Store apps

Speaking of the command line, if you want to see a list of all the Mac App Store apps that you have installed on your computer, you can run this command in Terminal.app:

find /Applications \
-path '*Contents/_MASReceipt/receipt' \
-maxdepth 4 -print |\
sed 's#.app/Contents/_MASReceipt/receipt#.app#g; s#/Applications/##'

Note: this won't show you Xcode, because Xcode is an unusual case. It is an installer which installs Xcode and then the installer is removed.

An ounce of prevention

There has been no indication that Apple will remove ReadNow from your list of Purchased apps, I just wanted to have a backup 'just in case.' Hopefully the "infringement letter" issue will be settled soon and it will be available again. However, if the iOS App Store is any indication, eventually jettisoned apps will become unavailable for re-download. Also, the upcoming sandboxing requirements may lead to some existing applications being removed.

As always, it's good to have your own backups rather than relying on being able to re-download anything from "the cloud." I wrote a small shell script which will look in /Applications/ for any applications which have the Mac App Store receipt, and create a .zip file for each of them. (While I have tested it myself and it works for me, YMMV, use only at your own risk, etc.)

To use it, download the script to your Desktop (or wherever) and then run:

chmod 755 ~/Desktop/backupmas.sh

And then run it via

~/Desktop/backupmas.sh

(Obviously if you saved it somewhere else, use that path instead of ~/Desktop/.)

It may ask for your administrator password. If so, that's the one you use to log in to your computer, not your Mac App Store password.