akshayskrishna/immich-incremental-snapshot — explained in plain English
Analysis updated 2026-05-18
Back up a multi-terabyte Immich photo library repeatedly without recopying unchanged files every time.
Keep a rolling history of timestamped snapshots so you can roll back to an earlier point if needed.
Schedule automatic incremental backups of a self-hosted Immich server via the script's built-in cron setup.
| akshayskrishna/immich-incremental-snapshot | 100/dotfiles | adams549659584/my-openwrt-actions | |
|---|---|---|---|
| Stars | 1 | 1 | 1 |
| Language | Shell | Shell | Shell |
| Last pushed | — | 2016-11-18 | 2020-06-06 |
| Maintenance | — | Dormant | Dormant |
| Setup difficulty | easy | easy | hard |
| Complexity | 2/5 | 1/5 | 3/5 |
| Audience | ops devops | developer | ops devops |
Figures from each repo's GitHub metadata at analysis time.
Requires bash, docker, rsync, and gzip already installed, the first run is a full copy before incremental savings kick in.
Immich Incremental Snapshot is a shell script for backing up an Immich installation, the same kind of self-hosted photo and video library covered by a sibling project, but built specifically for large libraries where making a full copy every time would waste a lot of storage. The first time it runs, it creates a complete snapshot. Every run after that, it uses a feature of rsync called link-dest to reuse unchanged files from the previous snapshot as hardlinks, rather than copying them again, while only actually copying files that are new or have changed. Like its full-backup sibling, the script asks the same setup questions: which folder holds the Immich Docker Compose files, where backups should be stored, whether there is a separate external library to include, and whether to install an optional cron schedule with choices like daily, weekly, or monthly. Before copying anything, it checks the backup folder for the most recent existing snapshot to use as the base for the incremental copy, if none exists yet, it just does a full copy instead. It also creates a compressed PostgreSQL database dump each run, briefly stops the Immich containers so the copy is not made mid-write, and restarts Immich afterward even if a step along the way fails. Each backup run produces a timestamped snapshot folder, with a "latest" link pointing at the newest one, and each snapshot contains its own database dump, media folder, external library folder if configured, and logs. The README notes that because the database dump is included in full each time, any user on the Immich instance can be restored from any single snapshot. It also suggests avoiding a separate external library where possible, recommending instead that external media be synced into Immich's main library using a different tool called immich-go. Requirements are the same as the full-backup version: bash, docker, rsync, gzip, and standard Unix utilities, with figlet as an optional extra for a nicer looking banner. A companion restore script in a separate sibling repository can restore from these snapshots, and it checks a saved manifest against the target install before restoring. No license is stated in the README.
A space-saving shell script that backs up a large Immich photo library incrementally, hardlinking unchanged files between snapshots.
Mainly Shell. The stack also includes Bash, Docker, PostgreSQL.
Setup difficulty is rated easy, with roughly 5min to a first successful run.
Mainly ops devops.
This repo across BitVibe Labs
double-check against the repo, no cap.