Another Calendar-based Tarsnap Script.
acts
is a minimal shell script that creates backups with Tarsnap. Our
design goals:
- Just backup, no restore.
- Calendar-based backup schedule
- Portable, small, code footprint.
One daily Tarsnap archive is created per-target per-run. By default, 31 daily and 12 monthly backups are kept, and yearly backups are kept indefinitely.
You can use the development version of acts
by cloning this
repository, or download the latest stable
release.
- Take
acts.conf.sample
, customise it for your environment, and save it to/etc/acts.conf
or/usr/local/etc/acts.conf
. - Run
acts
daily from cron.
Notes on behaviour:
acts
creates archives of the form<hostname>-<period>-yyyy-mm-dd_HH:MM:SS-target
.- Archives are created using the following logic:
- Daily archives are created every time acts is run.
- Monthly/yearly archives are copied from the most recent daily archive if they don't exist.
- Archives are deleted using the following logic by default:
- If any backups failed, delete nothing.
- Keep the most recent 31 daily backups, and delete any older ones.
- Keep the most recent 12 monthly backups, and delete any older ones.
- Do not delete any yearly backups.
- If you ever remove a backup path from your config, its old backups will no longer be automatically cleaned.
- Add per-directory excludes handling. (For now, add global excludes
in your
tarsnap.conf
or.tarsnaprc
file.)
-
How do I back up directories with spaces? Sorry, acts doesn't support this. I suggest you create a symlink to the target directory which doesn't have spaces in its path, and add
-L
totarsnapbackupoptions
in your configuration file. -
How do I see the
tarsnap
output? Basically, you don't.acts
only showstarsnap
output if tarsnap failed. To see what acts is doing, you can setverbose=1
in youracts.conf
. You can get some goodtarsnap
info, including exactly how much new data this backup consumed, with a prebackupscript. Be sure to setprebackupscript
inacts.conf
to wherever you put this script:
#!/bin/sh
. /etc/acts.conf # Or wherever your acts.conf lives
tarsnap --dry-run --quiet --print-stats --humanize-numbers -C / -c $backuptargets 2>&1
- Why does
acts
create a separate backup for each target? This is the original recommended paradigm fortarsnap
, the idea being that you save bandwidth (and therefore money) by only retrieving the pieces you need. If/etc
gets damaged, why download the entirety of/home
? If this paradigm doesn't fit your needs and workflow, there is a fork ofacts
called calsnap that produces one backup containing all targets.
Open a Github issue.