Enthusiasm never stops

Leave a comment

Authentication for google-sites-liberation

I am doing a regular backup of my Google Sites using the free tool google-sites-liberation. Out of the blue, today I got the following authentication error:

Aug 06, 2014 2:34:08 PM com.google.sites.liberation.export.Main doMain
SEVERE: Invalid User Credentials!
Exception in thread "main" java.lang.RuntimeException: com.google.gdata.client.GoogleService$InvalidCredentialsException: Invalid credentials
        at com.google.sites.liberation.export.Main.doMain(Main.java:89)
        at com.google.sites.liberation.export.Main.main(Main.java:97)
Caused by: com.google.gdata.client.GoogleService$InvalidCredentialsException: Invalid credentials
        at com.google.gdata.client.GoogleAuthTokenFactory.getAuthException(GoogleAuthTokenFactory.java:586)
        at com.google.gdata.client.GoogleAuthTokenFactory.getAuthToken(GoogleAuthTokenFactory.java:490)
        at com.google.gdata.client.GoogleAuthTokenFactory.setUserCredentials(GoogleAuthTokenFactory.java:336)
        at com.google.gdata.client.GoogleService.setUserCredentials(GoogleService.java:362)
        at com.google.gdata.client.GoogleService.setUserCredentials(GoogleService.java:317)
        at com.google.gdata.client.GoogleService.setUserCredentials(GoogleService.java:301)
        at com.google.sites.liberation.export.Main.doMain(Main.java:79)
        ... 1 more

This was followed by an email with subject “Google Account: sign-in attempt blocked”, which was a very useful hint by Google!

It turns out that they are now blocking login attempts from apps or devices that do not use modern security standards, according to their “Less secure apps” documentation.

Once I enabled the “Access for less secure apps”, I was able to export my Google sites using “google-sites-liberation”. It’s highly recommended that you disable the less secure authentication once you’ve finished the backup.


Backup Google Sites automatically

I just found out how to make my Google Sites backup script almost non-interactive, so I decided to share. My usage pattern of this script is that I run it every month in the Linux console, and then the weekly backup of my hard disk takes care to additionally back up the information.

Why bother backing up Google Sites?
While Google are very reliable and probably they will never fail me here, I want to have an offline backup of my Google Sites pages in case someone steals my Google Account. So I back up. Online and offline, every week.

The backup script uses the wonderful free Java application “Google Sites Liberation“. My script is actually more like a sample Bash usage of this Java tool. You need to download the .jar file and store it in the same directory as the backup script. The source code follows:

set -e
set -u
set -o pipefail

trap 'echo "ERROR: Abnormal exit." >&2' ERR

# config BEGIN

WIKI_LIST='wiki1 wiki2 wiki3'

# config END

echo "We are using '$JAR_BIN'. Check for a newer version:"
echo '	http://code.google.com/p/google-sites-liberation/downloads/list'

echo "The directory '$ROOT_BACKUP_DIR' will be deleted!!!"
echo 'Press Enter to confirm.'


echo -n "Enter the password for '$GUSER': "
read -s -r -e PASS
echo ; echo

for wiki in $WIKI_LIST ; do
	echo "*** Exporting '$wiki' in '$BACKUP_DIR'..."
	echo "Press Enter to continue."

	mkdir "$BACKUP_DIR"
	java -cp "$JAR_BIN" com.google.sites.liberation.export.Main \
		-w "$wiki" \
		-u "$GUSER" \
		-p "$PASS" \
		-f "$BACKUP_DIR"