{"adoption": {"forks": 137, "observed_at": "2026-08-28T04:06:18.411862+00:00", "stars": 2141}, "canonical_url": "https://ross.abutalabs.com/products/btrbk", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Tool for creating snapshots and remote backups of btrfs subvolumes", "domain": ["self-hosted", "files"], "enriched": true, "function": ["backup", "cli", "file-system", "security"], "health_score": 76, "homepage": "https://digint.ch/btrbk/", "language": "Perl", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "stable", "member_repos": ["digint/btrbk"], "name": "digint/btrbk", "platform": ["cli"], "pushed_at": "2026-07-19T17:33:32+00:00", "repo": "digint/btrbk", "stars": 2141, "tags": ["btrfs", "snapshots", "incremental-backups", "ssh", "retention-policy", "cron", "encrypted-backups", "backup", "command-line", "linux"], "topics": ["btrfs", "backup", "snapshot", "incremental-backups", "encrypted-backups"], "urls": [], "use_cases": ["create atomic snapshots of btrfs subvolumes on a schedule", "incrementally back up btrfs subvolumes to a remote server over ssh", "manage snapshot retention policies for laptop backup disks", "back up docker and lxc container subvolumes with wildcards", "send encrypted backups to non-btrfs storage", "recover from interrupted backups on removable drives", "archive snapshots to offline storage"], "what_it_is": "Btrbk is a Perl-based command-line backup tool for btrfs subvolumes that creates atomic snapshots and transfers them incrementally to local or remote backup locations via ssh. It is configured through a config file supporting flexible retention policies, multiple destinations, and encrypted backups to non-btrfs storage.", "when_to_avoid": ["your filesystem is not btrfs", "you need block-level or full-disk imaging rather than subvolume snapshots", "you need a GUI-driven backup solution"], "when_to_choose": ["your filesystem is btrfs and you want snapshot-aware incremental backups", "you need cron-driven periodic snapshots with flexible retention", "you back up multiple hosts to a central server over ssh", "you want a single-script tool with no special dependencies"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/btrbk", "repo": "digint/btrbk", "role": "main", "score": 74}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:18.411862+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:51:21.577122+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9901aff707cefe83272ce5e73063986fdb2a19ef4dbb2625889ed62606dd081d", "fetched_at": "2026-08-28T04:06:18.411862+00:00", "kind": "readme", "missing": false, "url": "https://github.com/digint/btrbk"}, {"content_hash": "be38ee07bddd848f4979b8100f798d9e94e78f2e67b899c460db4a6619cd492d", "fetched_at": "2026-08-29T10:31:47.508165+00:00", "kind": "homepage", "missing": false, "url": "https://digint.ch/btrbk/"}, {"content_hash": "614f66445b95c12788b0a98b0f10c18bccb41c41f470dfc8ab9663fe666d1622", "fetched_at": "2026-08-29T10:31:47.513346+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/index.html"}, {"content_hash": "7b4f23799aa5fa5da9a55f0a315159a3c3d00f222b8348f8dfe26d0bcfc7af79", "fetched_at": "2026-08-29T10:31:47.515854+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/contact.html"}, {"content_hash": "7b97ec6a8f3fd085f4d8f8adb02871f0b089f0a238e8cc3b300c8e9c4ea71f4c", "fetched_at": "2026-08-29T10:31:47.518027+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/siteinfo.html"}, {"content_hash": "3df2aa84b237169eb100a4cf67d82c745fac31ea9871ec3748cd67d2eb0e3c88", "fetched_at": "2026-08-29T10:31:47.519912+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/btrbk/doc/readme.html"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:18.411862+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:51:21.577122+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9901aff707cefe83272ce5e73063986fdb2a19ef4dbb2625889ed62606dd081d", "fetched_at": "2026-08-28T04:06:18.411862+00:00", "kind": "readme", "missing": false, "url": "https://github.com/digint/btrbk"}, {"content_hash": "be38ee07bddd848f4979b8100f798d9e94e78f2e67b899c460db4a6619cd492d", "fetched_at": "2026-08-29T10:31:47.508165+00:00", "kind": "homepage", "missing": false, "url": "https://digint.ch/btrbk/"}, {"content_hash": "614f66445b95c12788b0a98b0f10c18bccb41c41f470dfc8ab9663fe666d1622", "fetched_at": "2026-08-29T10:31:47.513346+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/index.html"}, {"content_hash": "7b4f23799aa5fa5da9a55f0a315159a3c3d00f222b8348f8dfe26d0bcfc7af79", "fetched_at": "2026-08-29T10:31:47.515854+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/contact.html"}, {"content_hash": "7b97ec6a8f3fd085f4d8f8adb02871f0b089f0a238e8cc3b300c8e9c4ea71f4c", "fetched_at": "2026-08-29T10:31:47.518027+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/siteinfo.html"}, {"content_hash": "3df2aa84b237169eb100a4cf67d82c745fac31ea9871ec3748cd67d2eb0e3c88", "fetched_at": "2026-08-29T10:31:47.519912+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/btrbk/doc/readme.html"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:51:21.577122+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9901aff707cefe83272ce5e73063986fdb2a19ef4dbb2625889ed62606dd081d", "fetched_at": "2026-08-28T04:06:18.411862+00:00", "kind": "readme", "missing": false, "url": "https://github.com/digint/btrbk"}, {"content_hash": "be38ee07bddd848f4979b8100f798d9e94e78f2e67b899c460db4a6619cd492d", "fetched_at": "2026-08-29T10:31:47.508165+00:00", "kind": "homepage", "missing": false, "url": "https://digint.ch/btrbk/"}, {"content_hash": "614f66445b95c12788b0a98b0f10c18bccb41c41f470dfc8ab9663fe666d1622", "fetched_at": "2026-08-29T10:31:47.513346+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/index.html"}, {"content_hash": "7b4f23799aa5fa5da9a55f0a315159a3c3d00f222b8348f8dfe26d0bcfc7af79", "fetched_at": "2026-08-29T10:31:47.515854+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/contact.html"}, {"content_hash": "7b97ec6a8f3fd085f4d8f8adb02871f0b089f0a238e8cc3b300c8e9c4ea71f4c", "fetched_at": "2026-08-29T10:31:47.518027+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/siteinfo.html"}, {"content_hash": "3df2aa84b237169eb100a4cf67d82c745fac31ea9871ec3748cd67d2eb0e3c88", "fetched_at": "2026-08-29T10:31:47.519912+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/btrbk/doc/readme.html"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:06:18.411862+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:18.411862+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:18.411862+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:51:21.577122+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9901aff707cefe83272ce5e73063986fdb2a19ef4dbb2625889ed62606dd081d", "fetched_at": "2026-08-28T04:06:18.411862+00:00", "kind": "readme", "missing": false, "url": "https://github.com/digint/btrbk"}, {"content_hash": "be38ee07bddd848f4979b8100f798d9e94e78f2e67b899c460db4a6619cd492d", "fetched_at": "2026-08-29T10:31:47.508165+00:00", "kind": "homepage", "missing": false, "url": "https://digint.ch/btrbk/"}, {"content_hash": "614f66445b95c12788b0a98b0f10c18bccb41c41f470dfc8ab9663fe666d1622", "fetched_at": "2026-08-29T10:31:47.513346+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/index.html"}, {"content_hash": "7b4f23799aa5fa5da9a55f0a315159a3c3d00f222b8348f8dfe26d0bcfc7af79", "fetched_at": "2026-08-29T10:31:47.515854+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/contact.html"}, {"content_hash": "7b97ec6a8f3fd085f4d8f8adb02871f0b089f0a238e8cc3b300c8e9c4ea71f4c", "fetched_at": "2026-08-29T10:31:47.518027+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/siteinfo.html"}, {"content_hash": "3df2aa84b237169eb100a4cf67d82c745fac31ea9871ec3748cd67d2eb0e3c88", "fetched_at": "2026-08-29T10:31:47.519912+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/btrbk/doc/readme.html"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:18.411862+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:18.411862+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:51:21.577122+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9901aff707cefe83272ce5e73063986fdb2a19ef4dbb2625889ed62606dd081d", "fetched_at": "2026-08-28T04:06:18.411862+00:00", "kind": "readme", "missing": false, "url": "https://github.com/digint/btrbk"}, {"content_hash": "be38ee07bddd848f4979b8100f798d9e94e78f2e67b899c460db4a6619cd492d", "fetched_at": "2026-08-29T10:31:47.508165+00:00", "kind": "homepage", "missing": false, "url": "https://digint.ch/btrbk/"}, {"content_hash": "614f66445b95c12788b0a98b0f10c18bccb41c41f470dfc8ab9663fe666d1622", "fetched_at": "2026-08-29T10:31:47.513346+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/index.html"}, {"content_hash": "7b4f23799aa5fa5da9a55f0a315159a3c3d00f222b8348f8dfe26d0bcfc7af79", "fetched_at": "2026-08-29T10:31:47.515854+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/contact.html"}, {"content_hash": "7b97ec6a8f3fd085f4d8f8adb02871f0b089f0a238e8cc3b300c8e9c4ea71f4c", "fetched_at": "2026-08-29T10:31:47.518027+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/siteinfo.html"}, {"content_hash": "3df2aa84b237169eb100a4cf67d82c745fac31ea9871ec3748cd67d2eb0e3c88", "fetched_at": "2026-08-29T10:31:47.519912+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/btrbk/doc/readme.html"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:18.411862+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:18.411862+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:18.411862+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:51:21.577122+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9901aff707cefe83272ce5e73063986fdb2a19ef4dbb2625889ed62606dd081d", "fetched_at": "2026-08-28T04:06:18.411862+00:00", "kind": "readme", "missing": false, "url": "https://github.com/digint/btrbk"}, {"content_hash": "be38ee07bddd848f4979b8100f798d9e94e78f2e67b899c460db4a6619cd492d", "fetched_at": "2026-08-29T10:31:47.508165+00:00", "kind": "homepage", "missing": false, "url": "https://digint.ch/btrbk/"}, {"content_hash": "614f66445b95c12788b0a98b0f10c18bccb41c41f470dfc8ab9663fe666d1622", "fetched_at": "2026-08-29T10:31:47.513346+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/index.html"}, {"content_hash": "7b4f23799aa5fa5da9a55f0a315159a3c3d00f222b8348f8dfe26d0bcfc7af79", "fetched_at": "2026-08-29T10:31:47.515854+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/contact.html"}, {"content_hash": "7b97ec6a8f3fd085f4d8f8adb02871f0b089f0a238e8cc3b300c8e9c4ea71f4c", "fetched_at": "2026-08-29T10:31:47.518027+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/siteinfo.html"}, {"content_hash": "3df2aa84b237169eb100a4cf67d82c745fac31ea9871ec3748cd67d2eb0e3c88", "fetched_at": "2026-08-29T10:31:47.519912+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/btrbk/doc/readme.html"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:18.411862+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:18.411862+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:51:21.577122+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9901aff707cefe83272ce5e73063986fdb2a19ef4dbb2625889ed62606dd081d", "fetched_at": "2026-08-28T04:06:18.411862+00:00", "kind": "readme", "missing": false, "url": "https://github.com/digint/btrbk"}, {"content_hash": "be38ee07bddd848f4979b8100f798d9e94e78f2e67b899c460db4a6619cd492d", "fetched_at": "2026-08-29T10:31:47.508165+00:00", "kind": "homepage", "missing": false, "url": "https://digint.ch/btrbk/"}, {"content_hash": "614f66445b95c12788b0a98b0f10c18bccb41c41f470dfc8ab9663fe666d1622", "fetched_at": "2026-08-29T10:31:47.513346+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/index.html"}, {"content_hash": "7b4f23799aa5fa5da9a55f0a315159a3c3d00f222b8348f8dfe26d0bcfc7af79", "fetched_at": "2026-08-29T10:31:47.515854+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/contact.html"}, {"content_hash": "7b97ec6a8f3fd085f4d8f8adb02871f0b089f0a238e8cc3b300c8e9c4ea71f4c", "fetched_at": "2026-08-29T10:31:47.518027+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/siteinfo.html"}, {"content_hash": "3df2aa84b237169eb100a4cf67d82c745fac31ea9871ec3748cd67d2eb0e3c88", "fetched_at": "2026-08-29T10:31:47.519912+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/btrbk/doc/readme.html"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:51:21.577122+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9901aff707cefe83272ce5e73063986fdb2a19ef4dbb2625889ed62606dd081d", "fetched_at": "2026-08-28T04:06:18.411862+00:00", "kind": "readme", "missing": false, "url": "https://github.com/digint/btrbk"}, {"content_hash": "be38ee07bddd848f4979b8100f798d9e94e78f2e67b899c460db4a6619cd492d", "fetched_at": "2026-08-29T10:31:47.508165+00:00", "kind": "homepage", "missing": false, "url": "https://digint.ch/btrbk/"}, {"content_hash": "614f66445b95c12788b0a98b0f10c18bccb41c41f470dfc8ab9663fe666d1622", "fetched_at": "2026-08-29T10:31:47.513346+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/index.html"}, {"content_hash": "7b4f23799aa5fa5da9a55f0a315159a3c3d00f222b8348f8dfe26d0bcfc7af79", "fetched_at": "2026-08-29T10:31:47.515854+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/contact.html"}, {"content_hash": "7b97ec6a8f3fd085f4d8f8adb02871f0b089f0a238e8cc3b300c8e9c4ea71f4c", "fetched_at": "2026-08-29T10:31:47.518027+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/siteinfo.html"}, {"content_hash": "3df2aa84b237169eb100a4cf67d82c745fac31ea9871ec3748cd67d2eb0e3c88", "fetched_at": "2026-08-29T10:31:47.519912+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/btrbk/doc/readme.html"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:51:21.577122+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9901aff707cefe83272ce5e73063986fdb2a19ef4dbb2625889ed62606dd081d", "fetched_at": "2026-08-28T04:06:18.411862+00:00", "kind": "readme", "missing": false, "url": "https://github.com/digint/btrbk"}, {"content_hash": "be38ee07bddd848f4979b8100f798d9e94e78f2e67b899c460db4a6619cd492d", "fetched_at": "2026-08-29T10:31:47.508165+00:00", "kind": "homepage", "missing": false, "url": "https://digint.ch/btrbk/"}, {"content_hash": "614f66445b95c12788b0a98b0f10c18bccb41c41f470dfc8ab9663fe666d1622", "fetched_at": "2026-08-29T10:31:47.513346+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/index.html"}, {"content_hash": "7b4f23799aa5fa5da9a55f0a315159a3c3d00f222b8348f8dfe26d0bcfc7af79", "fetched_at": "2026-08-29T10:31:47.515854+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/contact.html"}, {"content_hash": "7b97ec6a8f3fd085f4d8f8adb02871f0b089f0a238e8cc3b300c8e9c4ea71f4c", "fetched_at": "2026-08-29T10:31:47.518027+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/siteinfo.html"}, {"content_hash": "3df2aa84b237169eb100a4cf67d82c745fac31ea9871ec3748cd67d2eb0e3c88", "fetched_at": "2026-08-29T10:31:47.519912+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/btrbk/doc/readme.html"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:51:21.577122+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9901aff707cefe83272ce5e73063986fdb2a19ef4dbb2625889ed62606dd081d", "fetched_at": "2026-08-28T04:06:18.411862+00:00", "kind": "readme", "missing": false, "url": "https://github.com/digint/btrbk"}, {"content_hash": "be38ee07bddd848f4979b8100f798d9e94e78f2e67b899c460db4a6619cd492d", "fetched_at": "2026-08-29T10:31:47.508165+00:00", "kind": "homepage", "missing": false, "url": "https://digint.ch/btrbk/"}, {"content_hash": "614f66445b95c12788b0a98b0f10c18bccb41c41f470dfc8ab9663fe666d1622", "fetched_at": "2026-08-29T10:31:47.513346+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/index.html"}, {"content_hash": "7b4f23799aa5fa5da9a55f0a315159a3c3d00f222b8348f8dfe26d0bcfc7af79", "fetched_at": "2026-08-29T10:31:47.515854+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/contact.html"}, {"content_hash": "7b97ec6a8f3fd085f4d8f8adb02871f0b089f0a238e8cc3b300c8e9c4ea71f4c", "fetched_at": "2026-08-29T10:31:47.518027+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/about/siteinfo.html"}, {"content_hash": "3df2aa84b237169eb100a4cf67d82c745fac31ea9871ec3748cd67d2eb0e3c88", "fetched_at": "2026-08-29T10:31:47.519912+00:00", "kind": "site_page", "missing": false, "url": "https://digint.ch/btrbk/doc/readme.html"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 93, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4222, "days_push": 45, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 74, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}