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.confor/usr/local/etc/acts.conf. - Run
actsdaily from cron.
Notes on behaviour:
actscreates 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.confor.tarsnaprcfile.)
-
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
-Ltotarsnapbackupoptionsin your configuration file. -
How do I see the
tarsnapoutput? Basically, you don't.actsonly showstarsnapoutput if tarsnap failed. To see what acts is doing, you can setverbose=1in youracts.conf. You can get some goodtarsnapinfo, including exactly how much new data this backup consumed, with a prebackupscript. Be sure to setprebackupscriptinacts.confto 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
actscreate 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/etcgets damaged, why download the entirety of/home? If this paradigm doesn't fit your needs and workflow, there is a fork ofactscalled calsnap that produces one backup containing all targets.
Open a Github issue.