Tarsnap general usage
How Tarsnap archives work
Unlike many backup systems, Tarsnap works with a concept of immutable archives. Similar to backups stored on Write Once Read Many drives, once a Tarsnap archive has been created, it cannot be modified; each archive is cryptographically signed to ensure that it cannot be silently modified. For obvious reasons, this also means that archives cannot be overwritten; each archive must be created with a new name.
Tarsnap also makes creating new archives very fast: Because Tarsnap deduplicates archives against data stored in previous archives, if you have an archive already stored with a previous version of the data you're placing into a new archive, Tarsnap will automatically recognize the duplicated data and only upload the new blocks. Similarly, when you delete an archive, Tarsnap figures out which data was only in that archive, and deletes it, while leaving behind any data which is still needed by other archives.
In short, to use Tarsnap you should start by forgetting everything you know about managing backups. If you want a backup of your data every day, then just ask Tarsnap to create a backup of your data every day.
Tarsnap command line
The examples here assume that you're using a Tarsnap configuration
file including keyfile
and cachedir
directives.
The sample configuration file provided with Tarsnap specifies these
(the default key file location is /root/tarsnap.key
, and the
default cache directory location is
/usr/local/tarsnap-cache
). Each keyfile
defines a separate namespace for archive names.
- Create an archive named "mybackup" containing
/usr/home
and/other/stuff
: tarsnap -c -f mybackup /usr/home /other/stuff
- Create another archive a day later from the same directories; this will be much faster because Tarsnap will recognize and avoid uploading data which was stored previously:
tarsnap -c -f anotherbackup /usr/home /other/stuff
- List all the archives which have been stored:
tarsnap --list-archives
- Delete the first archive, leaving the second archive intact:
tarsnap -d -f mybackup
- List the files in the "anotherbackup" archive:
tarsnap -tv -f anotherbackup
- Restore a single file:
tarsnap -x -f anotherbackup usr/home/auser/important-file.txt
- Restore two users' home directories:
tarsnap -x -f anotherbackup usr/home/auser usr/home/anotheruser
- Print how much data would be uploaded (without uploading anything or spending any money):
tarsnap -c -f mybackup --dry-run --print-stats /usr/home
- Create another archive, printing some statistics once the uploading is completed:
tarsnap -c -f anotherbackup2 --print-stats /usr/home /other/stuff
Tarsnap cache directory
The tarsnap -c
and tarsnap -d
(archive creating and
deleting) operations use a "cache directory" which allows Tarsnap to
identify which blocks of data have been previously stored; this
directory is specified via the cachedir
directive in the
Tarsnap configuration file or via the --cachedir
option to
Tarsnap. If the cache directory is lost or out of date, the
tarsnap -c
and tarsnap -d
operations will exit with
an error message instructing you to run tarsnap --fsck
to
regenerate the cache directory.