{"id":18574452,"url":"https://github.com/proofrock/snapkup-docs","last_synced_at":"2026-01-24T20:17:21.403Z","repository":{"id":132816756,"uuid":"425311262","full_name":"proofrock/snapkup-docs","owner":"proofrock","description":"Documentation for snapkup","archived":false,"fork":false,"pushed_at":"2021-11-08T14:05:57.000Z","size":16,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-05-16T00:09:54.678Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/proofrock.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-11-06T17:53:46.000Z","updated_at":"2021-11-08T14:05:59.000Z","dependencies_parsed_at":null,"dependency_job_id":"70c425ba-ed3a-4fab-b036-5c3655753b12","html_url":"https://github.com/proofrock/snapkup-docs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/proofrock/snapkup-docs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/proofrock%2Fsnapkup-docs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/proofrock%2Fsnapkup-docs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/proofrock%2Fsnapkup-docs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/proofrock%2Fsnapkup-docs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/proofrock","download_url":"https://codeload.github.com/proofrock/snapkup-docs/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/proofrock%2Fsnapkup-docs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28736503,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T19:23:36.361Z","status":"ssl_error","status_checked_at":"2026-01-24T19:23:28.966Z","response_time":89,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T23:15:26.889Z","updated_at":"2026-01-24T20:17:21.373Z","avatar_url":"https://github.com/proofrock.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# ❓ What is snapkup?\n\nSnapkup is a simple backup tool that takes snapshots of your filesystem (or the parts that you'll decide), storing them efficiently and conveniently.\n\nI 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.\n\nI like its features. Please let me know if you'd like something else!\n\n### Basic workflow\n\nThe basic flow to accomplish this can be summed up as:\n\n* You initialize an empty directory that will store the backups;\n* You register one or more backup roots: these are directory or files that will be snapshotted;\n* You take one (and then more) snapshots. Snapkup lists all the filesystem tree for those roots, taking a copy of the contents;\n* You can later restore the situation of the roots at any given snapshot;\n* Of course, it's possible to list roots and snapshots and delete any of them, and perform all the other admin ops.\n\n### Design choices\n\n* Built with Go(lang). You get one statically linked binary, and that's all you need;\n* Files are deduplicated: only one copy of a file is stored, across the filesystem and all the snapshots;\n* Everything stored on-disk is encrypted, using `XChaCha20Poly1305;`\n* Checksums, using authenticated 128-bit `SipHash`, are used to perform deduplication and integrity;\n* By default, everything is compressed using `zstd -19;`\n  * Incompressible files are stored as not compressed;\n* Small files can be merged in \"agglos\", to reduce the number of files and make it more sync-friendly (e.g. for Dropbox);\n* Snapkup favors features and code readability over speed. It's not slow, though!\n* All paths are converted to absolute paths, for consistency;\n* Cross-platform portability of backup archives is not a priority, though it should reasonably work.\n\n### Future plans\n\n* Ability to produce all outputs as JSON (maybe), for better script-ability;\n* Ability to retrieve files from external filesystems, via SSH;\n* Ability to back up data that come from the execution of a command (e.g. `crontab -l`);\n* FUSE-mount a snapshot.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fproofrock%2Fsnapkup-docs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fproofrock%2Fsnapkup-docs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fproofrock%2Fsnapkup-docs/lists"}