https://github.com/proofrock/snapkup-docs
Documentation for snapkup
https://github.com/proofrock/snapkup-docs
Last synced: 5 months ago
JSON representation
Documentation for snapkup
- Host: GitHub
- URL: https://github.com/proofrock/snapkup-docs
- Owner: proofrock
- Created: 2021-11-06T17:53:46.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2021-11-08T14:05:57.000Z (over 4 years ago)
- Last Synced: 2025-05-16T00:09:54.678Z (about 1 year ago)
- Size: 15.6 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# ❓ What is snapkup?
Snapkup is a simple backup tool that takes snapshots of your filesystem (or the parts that you'll decide), storing them efficiently and conveniently.
I wrote it because I wanted a single point to backup all the files in my linux system, and synchronize them to a cloud sync server. I wanted it to be incremental, of course, and to provide full deduplication; to compress the files and to encrypt them for privacy, as I also keep a copy of the backup on an USB disk.
I like its features. Please let me know if you'd like something else!
### Basic workflow
The basic flow to accomplish this can be summed up as:
* You initialize an empty directory that will store the backups;
* You register one or more backup roots: these are directory or files that will be snapshotted;
* You take one (and then more) snapshots. Snapkup lists all the filesystem tree for those roots, taking a copy of the contents;
* You can later restore the situation of the roots at any given snapshot;
* Of course, it's possible to list roots and snapshots and delete any of them, and perform all the other admin ops.
### Design choices
* Built with Go(lang). You get one statically linked binary, and that's all you need;
* Files are deduplicated: only one copy of a file is stored, across the filesystem and all the snapshots;
* Everything stored on-disk is encrypted, using `XChaCha20Poly1305;`
* Checksums, using authenticated 128-bit `SipHash`, are used to perform deduplication and integrity;
* By default, everything is compressed using `zstd -19;`
* Incompressible files are stored as not compressed;
* Small files can be merged in "agglos", to reduce the number of files and make it more sync-friendly (e.g. for Dropbox);
* Snapkup favors features and code readability over speed. It's not slow, though!
* All paths are converted to absolute paths, for consistency;
* Cross-platform portability of backup archives is not a priority, though it should reasonably work.
### Future plans
* Ability to produce all outputs as JSON (maybe), for better script-ability;
* Ability to retrieve files from external filesystems, via SSH;
* Ability to back up data that come from the execution of a command (e.g. `crontab -l`);
* FUSE-mount a snapshot.