{ "module": "restic", "version": "1", "moved": true, "claims": [ { "name": "node-backup", "scope": "node", "serves": [ "backed-up", "now", "restore" ] } ], "tools": [ "backup_health", "backup_delete_retired", "backup_deleted" ], "own-secrets": { "repository": "${dir:state}/repository.secret" }, "data": { "own": [ { "id": "repository", "path": "${dir:repository}", "class": "rebuildable", "backup": "none", "why": "the restore points themselves: a copy of data kept elsewhere on this machine, never the only copy of anything; lost, the history goes and nothing live does" }, { "id": "state", "path": "${dir:state}", "class": "cache", "why": "what the last nights and measurements were; the next night writes it again" } ] }, "config": { "keep-daily": { "type": "number", "description": "How many nightly restore points are kept, a count from 1 to 9999: two weeks undo a mistake noticed within a fortnight. Read by the night, which thins nothing while it does not read (novox/hq issue 416); lowering it deletes the restore points beyond the new count at the next night, and that cannot be undone.", "minimum": 1, "maximum": 9999, "trusted": true, "default": 14 }, "keep-weekly": { "type": "number", "description": "How many weekly restore points are kept behind the dailies, a count from 1 to 9999, refused by the night like keep-daily; lowering it deletes the restore points beyond the new count at the next night, and that cannot be undone.", "minimum": 1, "maximum": 9999, "trusted": true, "default": 8 }, "keep-monthly": { "type": "number", "description": "How many monthly restore points are kept behind the weeklies, a count from 1 to 9999, refused by the night like keep-daily; lowering it deletes the restore points beyond the new count at the next night, and that cannot be undone.", "minimum": 1, "maximum": 9999, "trusted": true, "default": 6 }, "keep-hand-taken-days": { "type": "number", "description": "How many days a restore point taken by hand (node-backup.now, or the mesh's before a module moves) is kept at least, a count from 1 to 9999; it is kept until a later good night of its module exists, and this many days in any case, so the next thinning never takes the one taken against a risky change (novox/hq issue 453). Lowering it lets go of the older ones taken by hand at the next thinning, and that cannot be undone.", "minimum": 1, "maximum": 9999, "trusted": true, "default": 7 } }, "resources": [ { "id": "state", "type": "directory", "mode": "0700", "place": "." }, { "id": "repository", "type": "directory", "mode": "0700" }, { "id": "declared", "type": "file", "path": "${dir:state}/backups.conf", "mode": "0600", "template": "files/backups.conf" }, { "id": "data-declared", "type": "file", "path": "${dir:state}/data.conf", "mode": "0600", "template": "files/data.conf" }, { "id": "retention", "type": "file", "path": "${dir:state}/retention.conf", "mode": "0644", "trusted": true, "template": "files/retention.conf" }, { "id": "tool", "type": "package", "package": "restic" }, { "id": "sqlite", "type": "package", "package": "sqlite" }, { "id": "night", "type": "process", "name": "restic-night", "artifact": "tools", "run": [ "./restic-backups", "night" ], "user": "${machine:account}", "env": { "MESH_BACKUP_DECLARED": "${dir:state}/backups.conf", "MESH_BACKUP_REPOSITORY": "${dir:repository}", "MESH_BACKUP_PASSWORD_FILE": "${dir:state}/repository.secret", "MESH_BACKUP_STATE": "${dir:state}", "MESH_BACKUP_DATA": "${dir:state}/data.conf" }, "health": { "kind": "tool", "tool": "backup_health", "interval": "60s", "timeout": "20s", "looks": 2, "grace": "60s" } }, { "id": "measure", "type": "process", "name": "restic-measure", "artifact": "tools", "run": [ "./restic-backups", "measure" ], "user": "${machine:account}", "env": { "MESH_BACKUP_DECLARED": "${dir:state}/backups.conf", "MESH_BACKUP_REPOSITORY": "${dir:repository}", "MESH_BACKUP_PASSWORD_FILE": "${dir:state}/repository.secret", "MESH_BACKUP_STATE": "${dir:state}", "MESH_BACKUP_DATA": "${dir:state}/data.conf" }, "health": { "kind": "unit" } } ], "build": { "artifacts": [ { "name": "tools", "kind": "bundle", "language": "go", "system": "arch", "from": "cmd/restic-backups", "binary": "restic-backups", "loads": [ "restic-backups" ], "env": { "MESH_BACKUP_DECLARED": "${dir:state}/backups.conf", "MESH_BACKUP_REPOSITORY": "${dir:repository}", "MESH_BACKUP_PASSWORD_FILE": "${dir:state}/repository.secret", "MESH_BACKUP_STATE": "${dir:state}", "MESH_BACKUP_DATA": "${dir:state}/data.conf" } }, { "name": "files", "kind": "archive", "from": "files" } ] } }