{"id":20122858,"url":"https://github.com/freaky/snapzfs","last_synced_at":"2025-06-20T04:06:15.619Z","repository":{"id":142942566,"uuid":"19053437","full_name":"Freaky/snapzfs","owner":"Freaky","description":"The dubious beginnings of yet another automatic ZFS snapshot script.","archived":false,"fork":false,"pushed_at":"2018-06-02T18:21:37.000Z","size":39,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-02T20:30:41.757Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","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/Freaky.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":"2014-04-23T02:00:13.000Z","updated_at":"2018-06-02T18:21:39.000Z","dependencies_parsed_at":"2023-04-07T07:01:15.582Z","dependency_job_id":null,"html_url":"https://github.com/Freaky/snapzfs","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Freaky/snapzfs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Freaky%2Fsnapzfs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Freaky%2Fsnapzfs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Freaky%2Fsnapzfs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Freaky%2Fsnapzfs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Freaky","download_url":"https://codeload.github.com/Freaky/snapzfs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Freaky%2Fsnapzfs/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260878327,"owners_count":23075959,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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-13T19:41:30.914Z","updated_at":"2025-06-20T04:06:10.605Z","avatar_url":"https://github.com/Freaky.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"snapzfs\n=======\n\nYet another ZFS auto-snapshot script. You probably don't want to be using it yet.\nUnfinished, untested, untidied.\n\n\nFeatures\n--------\n\n * Driven almost entirely by ZFS user attributes.\n * One cronjob.\n * All snapshot types share a namespace.  Just @auto.yyyy-mm-ddThh:mm:ssZ\n * UTC or death.\n * Destroys unnecessary empty snapshots.\n * Kicks puppies.\n * Self-contained script. No gems, just stock Ruby 2.0+ and its standard library.\n * Probably won't cause data loss.  Probably.\n\n\nUsage\n-----\n\n    snapzfs policy \"4 * 15 minutes; 24 hourly; 7 daily; 4 weekly\" tank\n    snapzfs disable tank/junk\n    snapzfs enable tank/junk/important\n    snapzfs policy \"7 daily\" tank/media\n    echo \"*/15 * * * * root /path/to/snapzfs auto\" \u003e\u003e/etc/crontab\n\nKeeps four snapshots at 15 minute intervals, 24 at hourly intervals, 7 at daily\nintervals, and 4 at weekly intervals.  `snapzfs list` to view them. `snapzfs nuke`\nto get rid of them all.\n\nUse \"zfs hold\" for any snapshots you want to keep.\n\n\nZFS Properties\n--------------\n\n    st.hur:snapshot.\n                    policy      String    The snapshot policy.\n                    auto        Bool      Whether this dataset is snapshotted.\n                                  Note expirations happen regardless.\n                    policies    String    The policies applied to this snapshot.\n                    created_at  Integer   Unixtime this snapshot was made.\n                    expires_at  Integer   Unixtime this snapshot expires.\n                                  Not currently used.\n\n\nTODO\n----\n\n * Named snapshots with expiry dates.\n * Time/date based snapshots.  e.g. \"7 midnight\" for seven at or near 00:00.\n * Localtime.  '+' is an invalid snapshot name, which torpedoed my desire for\n   ISO 8601 dates.\n * Test suite.\n * Refactor.  One monolithic file seemed like a good idea at the start.\n   (And it probably still is for deployment).\n * Actually use OptionParser.\n * Documentation, license, etc.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffreaky%2Fsnapzfs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffreaky%2Fsnapzfs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffreaky%2Fsnapzfs/lists"}