Skip to content

Tarsnap - deleting unwanted archive-files

I backup my system with tarsnap every night via crontab, using the following command to make files with date stamps.

tarsnap --exclude [any-files-not-to-backup] -c -f\ arcadiabackup-`date +%y%m%d` /data-to-backup

After some days this produces archive-files of the following character as seen with tarsnap --list-archives.


(In practice, the files will not always be in the correct date order as they are in this example.)

The problem
After several months I ended up with over 100 archive files and this resulted in my paying for more space than I needed.

You can delete files with a command such as:

tarsnap -d -f arcadiabackup-131201

When you have a lot of files to delete this will take a long time if you delete each one separately, and tarsnap doesn't allow the use of wildcards. But you can have more than one -f and this offers a quicker route.

The solution
I have worked out a semi-automatic method which I now describe. It would be possible to make it fully aujtomatic by using python or a similar language and I may do that one day, but for the moment this works for me. Here are the steps.

(Note: my editor is vim. If you use a different editor, such as emacs, you'll have to adapt the steps for that.)

1. Make a list of all the archive-files and save it as, e.g., archivelist.

tarsnap --list-archives > archivelist

2. Make an executable script called, e.g. tarsnap-delete. It should contain the following lines initially:

tarsnap -d

3. Import archivelist (made in Step 1) into tarsnap-delete.

It will now look something like this.

tarsnap -d

4. Now delete all the entries that you DON'T want to remove from the tarsnap archjve. E.g. in this case you might delete the newest two entries (arcadiabackup-131103 and arcadiabackup-131104).

5. You now want to insert -f before each remaining archive file. In vim you can do it like this:

:%s/arcadia/-f arcadia/g

Your file will now look like this:

tarsnap -d
-f arcadiabackup-131201
-f arcadiabackup-131102

6. Almost there! Now we just format all the entries into a single paragraph:


It will now look like this:

tarsnap -d -f arcadiabackup-131101 -f\

(Note: if you have a lot of entries, you will need to do

:set tw=1000

to avoid unwanted breaks in the command line.)

7. You can now save and exit vim, after which executing the file tarsnap-delete will delete all the archive files you selected.

Backing up with tarsnap

I have to say that I'm mostly unhappy about putting important personal stuff on the "cloud". At the same time, the thought that everything might be lost if a disaster occurred here is not nice either. So recently I looked into several places for storing files but they all had difficulties of one kind another. Many didn't work for linux, and of those that did, either there were problems using them or the security was suspect, or both. One which I liked had a scheme for distributed storage on people's computers. Admittedly the files would be broken up and encrupted, but still I didn't like the idea. I wouldn't put my own stuff out there and I wouldn't want other people's files on my system.

Then I looked at Tarsnap (Online Backup for the Truly Paranoid), which is different. Security is at its heart and it doesn't even run on Windows (except with Cygwin)! It also has a very reasonable pricing system - you only pay for what you use. So if you are similarly thinking about off-site storage and you use Linux or FreeBSD, have a look at tarsnap.

From the tarsnap home page

Tarsnap is a secure online backup service for BSD, Linux, OS X, Minix, Solaris, Cygwin, and probably many other UNIX-like operating systems. The Tarsnap client code provides a flexible and powerful command-line interface which can be used directly or via shell scripts. ... With five minutes to download and install Tarsnap and $5 for an initial deposit, you can get started with Tarsnap today and stop worrying about whether your data is safe.