I’ve been using Pinboard for several months now. It allows me view my bookmarks on different devices, and it grabs articles and links from my Instapaper and Twitter accounts.
If the bookmarks stored by Pinboard are important to you though, you shouldn’t
trust Pinboard to back them up for you. This is a simple bash script to backup
your Pinboard bookmarks to your local machine.
Assuming you have curl installed on your unix-like system, add the following
to a file in your PATH (~/bin is the usual location), and change the
username, password and backup directory values:
#!/bin/bash -
cookies=cookies.txt
username=johnsmith
password=hunter2
backup_dir="$HOME/"
printf "Backing up Pinboard bookmarks... "
curl -s -d "username=$username&password=$password" \
'https://pinboard.in/auth/' -c $cookies > /dev/null 2>&1
curl -s -L -b $cookies -c $cookies \
'https://pinboard.in/export/format:html/' | bzip2 -c > \
"$backup_dir"/pinboard-bookmarks-`date "+%Y%m%d%H%M"`.htm.bz2
if [[ -f $cookies ]]; then
rm $cookies;
fi
# Remove Pinboard bookmark backup files older than 14 days
find "$backup_dir" -name 'pinboard-bookmarks-*.htm.bz2' -type f -mtime \
+14 -maxdepth 1 -print0 | xargs -0I{} rm {}
printf "Done.\n"
What it does
Firstly, curl visits the login page, entering your username and password, and
grabbing the token that Pinboard returns, keeping it in the cookie jar.
Then curl sends a GET request to the page holding your bookmarks for
export. I’ve chosen the html format, a legacy Netscape format that’s
understood by lots of other services, but you could change this to json or
xml. Before saving the bookmarks into a file (here, in my backup directory,
but change this to suit your taste), it’s passed through bzip2 to compress the
information to save space.
Finally, old backup files are removed.