Incremental directory snapshots
tarn takes point-in-time snapshots of a local directory. Unchanged files are hard-linked to the previous snapshot, so a hundred snapshots of a mostly-static tree cost barely more disk than one.
$ tarn snap ~/work /mnt/backup/work
scanning ~/work
4812 files, 1.9 GiB
linked 4737 unchanged
copied 75 changed (14.2 MiB)
snapshot 2026-07-30T09-14-02 (14.2 MiB new)
Why hard links
Each snapshot is a plain directory you can browse, copy or delete with ordinary
tools. There is no archive format, no database and no daemon. Restoring a file
means copying it back out with cp.
Deleting an old snapshot frees only the data unique to it. The remaining snapshots stay complete, because the kernel keeps the inode alive until the last link to it is gone.
Install
Builds to a single static binary with no runtime dependencies:
$ tar xzf tarn-0.7.2.tar.gz && cd tarn-0.7.2
$ make
$ sudo make install PREFIX=/usr/local
At a glance
| Snapshot cost | Only changed files consume new space |
|---|---|
| Format | Plain directories — no proprietary container |
| Restore | Any file manager, cp, rsync |
| Retention | Configurable daily / weekly / monthly pruning |
| Platforms | Linux, FreeBSD, macOS |
Read the documentation for the full command reference and retention rules.