[{"data":1,"prerenderedAt":467},["ShallowReactive",2],{"navigation":3,"\u002Freference\u002Fscripts":94,"\u002Freference\u002Fscripts-surround":462},[4,16,38,56,70,80],{"title":5,"path":6,"stem":7,"children":8,"icon":15},"Getting Started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,11],{"title":10,"path":6,"stem":7},"What is fsbackup?",{"title":12,"path":13,"stem":14},"Requirements & hardware","\u002Fgetting-started\u002Frequirements","1.getting-started\u002F2.requirements","i-lucide-rocket",{"title":17,"icon":18,"path":19,"stem":20,"children":21,"page":37},"Installation","i-lucide-package","\u002Finstallation","2.installation",[22,26,30,33],{"title":23,"path":24,"stem":25},"Quick start","\u002Finstallation\u002Fquickstart","2.installation\u002F1.quickstart",{"title":27,"path":28,"stem":29},"ZFS pool setup","\u002Finstallation\u002Fzfs-pool","2.installation\u002F2.zfs-pool",{"title":17,"path":31,"stem":32},"\u002Finstallation\u002Fbare-metal","2.installation\u002F3.bare-metal",{"title":34,"path":35,"stem":36},"Adding remote hosts","\u002Finstallation\u002Fadding-hosts","2.installation\u002F4.adding-hosts",false,{"title":39,"icon":40,"path":41,"stem":42,"children":43,"page":37},"Configuration","i-lucide-sliders","\u002Fconfiguration","3.configuration",[44,48,52],{"title":45,"path":46,"stem":47},"fsbackup.conf","\u002Fconfiguration\u002Ffsbackup-conf","3.configuration\u002F1.fsbackup-conf",{"title":49,"path":50,"stem":51},"targets.yml","\u002Fconfiguration\u002Ftargets","3.configuration\u002F2.targets",{"title":53,"path":54,"stem":55},"Scheduling","\u002Fconfiguration\u002Fscheduling","3.configuration\u002F3.scheduling",{"title":57,"icon":58,"path":59,"stem":60,"children":61,"page":37},"Usage","i-lucide-play","\u002Fusage","4.usage",[62,66],{"title":63,"path":64,"stem":65},"Web UI","\u002Fusage\u002Fweb-ui","4.usage\u002F1.web-ui",{"title":67,"path":68,"stem":69},"Running jobs manually","\u002Fusage\u002Frunning-jobs","4.usage\u002F2.running-jobs",{"title":71,"icon":72,"path":73,"stem":74,"children":75,"page":37},"Restore","i-lucide-history","\u002Frestore","5.restore",[76],{"title":77,"path":78,"stem":79},"Restoring data","\u002Frestore\u002Frestore","5.restore\u002F1.restore",{"title":81,"icon":82,"path":83,"stem":84,"children":85,"page":37},"Reference","i-lucide-book-open","\u002Freference","6.reference",[86,90],{"title":87,"path":88,"stem":89},"Script reference","\u002Freference\u002Fscripts","6.reference\u002F1.scripts",{"title":91,"path":92,"stem":93},"Prometheus metrics","\u002Freference\u002Fmetrics","6.reference\u002F2.metrics",{"id":95,"title":87,"body":96,"description":455,"extension":456,"links":457,"meta":458,"navigation":459,"path":88,"seo":460,"stem":89,"__hash__":461},"docs\u002F6.reference\u002F1.scripts.md",{"type":97,"value":98,"toc":443},"minimark",[99,104,186,190,275,279,340,344,354,358,364,380,384,390,394,400,423,427,433],[100,101,103],"h2",{"id":102},"scripts-run-by-systemd-timers","Scripts run by systemd timers",[105,106,107,123],"table",{},[108,109,110],"thead",{},[111,112,113,117,120],"tr",{},[114,115,116],"th",{},"Script",[114,118,119],{},"Location",[114,121,122],{},"Description",[124,125,126,143,157,171],"tbody",{},[111,127,128,135,140],{},[129,130,131],"td",{},[132,133,134],"code",{},"fs-runner.sh",[129,136,137],{},[132,138,139],{},"bin\u002F",[129,141,142],{},"Core rsync snapshot runner. Takes ZFS snapshots for a class and tier.",[111,144,145,150,154],{},[129,146,147],{},[132,148,149],{},"fs-doctor.sh",[129,151,152],{},[132,153,139],{},[129,155,156],{},"Health check: SSH reachability, source path existence.",[111,158,159,164,168],{},[129,160,161],{},[132,162,163],{},"fs-retention.sh",[129,165,166],{},[132,167,139],{},[129,169,170],{},"Prunes old ZFS snapshots per KEEP_DAILY\u002FWEEKLY\u002FMONTHLY\u002FANNUAL.",[111,172,173,178,183],{},[129,174,175],{},[132,176,177],{},"fs-export-s3.sh",[129,179,180],{},[132,181,182],{},"s3\u002F",[129,184,185],{},"Encrypts and uploads weekly\u002Fmonthly\u002Fannual snapshots to S3.",[100,187,189],{"id":188},"manualadmin-utilities","Manual\u002Fadmin utilities",[105,191,192,202],{},[108,193,194],{},[111,195,196,198,200],{},[114,197,116],{},[114,199,119],{},[114,201,122],{},[124,203,204,219,233,247,261],{},[111,205,206,211,216],{},[129,207,208],{},[132,209,210],{},"fs-restore.sh",[129,212,213],{},[132,214,215],{},"utils\u002F",[129,217,218],{},"List and restore files from local ZFS snapshots.",[111,220,221,226,230],{},[129,222,223],{},[132,224,225],{},"fs-trust-host.sh",[129,227,228],{},[132,229,215],{},[129,231,232],{},"Seeds SSH host keys for a remote host.",[111,234,235,240,244],{},[129,236,237],{},[132,238,239],{},"fs-provision.sh",[129,241,242],{},[132,243,139],{},[129,245,246],{},"Creates ZFS datasets for all targets in targets.yml.",[111,248,249,254,258],{},[129,250,251],{},[132,252,253],{},"fs-fix-permissions.sh",[129,255,256],{},[132,257,139],{},[129,259,260],{},"Sets ACLs on local source paths for the fsbackup user.",[111,262,263,268,272],{},[129,264,265],{},[132,266,267],{},"fs-schedule-apply.sh",[129,269,270],{},[132,271,139],{},[129,273,274],{},"Writes OnCalendar= drop-ins for each timer from fsbackup.conf.",[100,276,278],{"id":277},"scripts-that-run-on-remote-hosts","Scripts that run on remote hosts",[105,280,281,291],{},[108,282,283],{},[111,284,285,287,289],{},[114,286,116],{},[114,288,119],{},[114,290,122],{},[124,292,293,312,326],{},[111,294,295,300,305],{},[129,296,297],{},[132,298,299],{},"fsbackup_remote_init.sh",[129,301,302],{},[132,303,304],{},"remote\u002F",[129,306,307,308,311],{},"Sets up the ",[132,309,310],{},"backup"," user on a remote source host.",[111,313,314,319,323],{},[129,315,316],{},[132,317,318],{},"fs-prometheus-prebackup.sh",[129,320,321],{},[132,322,304],{},[129,324,325],{},"Takes a Prometheus API snapshot before backup runs.",[111,327,328,333,337],{},[129,329,330],{},[132,331,332],{},"fs-victoriametrics-prebackup.sh",[129,334,335],{},[132,336,304],{},[129,338,339],{},"Takes a VictoriaMetrics API snapshot before backup runs.",[100,341,343],{"id":342},"fs-runnersh-flags","fs-runner.sh flags",[345,346,351],"pre",{"className":347,"code":349,"language":350},[348],"language-text","fs-runner.sh \u003Ctier> --class \u003Cclass> [options]\n\n  tier                  daily | weekly | monthly | annual\n  --class \u003Cclass>       class1 | class2 | class3\n  --target \u003Cid>         Run for a single target only\n  --dry-run             Print what would happen, make no changes\n  --replace-existing    Force full re-sync (skips --ignore-existing)\n","text",[132,352,349],{"__ignoreMap":353},"",[100,355,357],{"id":356},"fs-doctorsh-flags","fs-doctor.sh flags",[345,359,362],{"className":360,"code":361,"language":350},[348],"fs-doctor.sh --class \u003Cclass>\n",[132,363,361],{"__ignoreMap":353},[365,366,367,368,371,372,375,376,379],"p",{},"Output columns: ",[132,369,370],{},"TARGET",", ",[132,373,374],{},"STAT"," (OK \u002F WARN \u002F FAIL), ",[132,377,378],{},"DETAIL",".",[100,381,383],{"id":382},"fs-restoresh-flags","fs-restore.sh flags",[345,385,388],{"className":386,"code":387,"language":350},[348],"# List snapshots\nfs-restore.sh list [--class \u003Cclass>] [--id \u003Ctarget>]\n\n# Restore a snapshot\nfs-restore.sh restore \\\n  --class \u003Cclass> \\\n  --id \u003Ctarget> \\\n  { --snapshot \u003Cname> | --latest [--type \u003Ctier>] } \\\n  --dest \u003Cpath> \\\n  [--dry-run]\n",[132,389,387],{"__ignoreMap":353},[100,391,393],{"id":392},"fs-retentionsh-flags","fs-retention.sh flags",[345,395,398],{"className":396,"code":397,"language":350},[348],"fs-retention.sh [--dry-run]\n",[132,399,397],{"__ignoreMap":353},[365,401,402,403,371,406,371,409,371,412,415,416,418,419,422],{},"Reads ",[132,404,405],{},"KEEP_DAILY",[132,407,408],{},"KEEP_WEEKLY",[132,410,411],{},"KEEP_MONTHLY",[132,413,414],{},"KEEP_ANNUAL"," from ",[132,417,45],{},". ",[132,420,421],{},"KEEP_ANNUAL=0"," means keep all annual snapshots indefinitely.",[100,424,426],{"id":425},"fs-provisionsh-flags","fs-provision.sh flags",[345,428,431],{"className":429,"code":430,"language":350},[348],"fs-provision.sh [--dry-run] [--targets-file \u003Cpath>]\n",[132,432,430],{"__ignoreMap":353},[365,434,435,436,439,440,442],{},"Creates ",[132,437,438],{},"backup\u002Fsnapshots\u002F\u003Cclass>\u002F\u003Ctarget>"," ZFS datasets for all targets defined in ",[132,441,49],{},". Idempotent — skips datasets that already exist.",{"title":353,"searchDepth":444,"depth":445,"links":446},1,2,[447,448,449,450,451,452,453,454],{"id":102,"depth":445,"text":103},{"id":188,"depth":445,"text":189},{"id":277,"depth":445,"text":278},{"id":342,"depth":445,"text":343},{"id":356,"depth":445,"text":357},{"id":382,"depth":445,"text":383},{"id":392,"depth":445,"text":393},{"id":425,"depth":445,"text":426},"Reference for all fsbackup scripts — what they do, where they live, and when they run.","md",null,{},true,{"title":87,"description":455},"qXaGyUojAX5Dgn7kH0c-cKMNVFw6NPwmA8Wm3ZPqIKo",[463,465],{"title":77,"path":78,"stem":79,"description":464,"children":-1},"How to restore files from local ZFS snapshots or S3 archives using fs-restore.sh or manually.",{"title":91,"path":92,"stem":93,"description":466,"children":-1},"Reference for all Prometheus metrics emitted by fsbackup via node_exporter textfile collector.",1775923867292]