[{"data":1,"prerenderedAt":556},["ShallowReactive",2],{"navigation":3,"\u002Fconfiguration\u002Fscheduling":94,"\u002Fconfiguration\u002Fscheduling-surround":551},[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":53,"body":96,"description":545,"extension":546,"links":547,"meta":548,"navigation":409,"path":54,"seo":549,"stem":55,"__hash__":550},"docs\u002F3.configuration\u002F3.scheduling.md",{"type":97,"value":98,"toc":537},"minimark",[99,116,121,138,141,163,172,176,280,283,287,298,358,362,458,467,471,493,497,504,525,533],[100,101,102,103,107,108,111,112,115],"p",{},"Scheduling is handled by systemd timers. Each class\u002Ftype combination has a ",[104,105,106],"code",{},".timer"," and ",[104,109,110],{},".service"," unit installed under ",[104,113,114],{},"\u002Fetc\u002Fsystemd\u002Fsystem\u002F",".",[117,118,120],"h2",{"id":119},"how-it-works","How it works",[100,122,123,124,127,128,130,131,134,135,137],{},"Timer schedules are stored as ",[104,125,126],{},"OnCalendar="," drop-in files under ",[104,129,114],{},". The ",[104,132,133],{},"CLASS\u003CN>_\u003CTYPE>_SCHEDULE"," variables in ",[104,136,45],{}," control these schedules.",[100,139,140],{},"After editing schedule variables, apply the changes:",[142,143,148],"pre",{"className":144,"code":145,"language":146,"meta":147,"style":147},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","sudo \u002Fopt\u002Ffsbackup\u002Fbin\u002Ffs-schedule-apply.sh\n","bash","",[104,149,150],{"__ignoreMap":147},[151,152,155,159],"span",{"class":153,"line":154},"line",1,[151,156,158],{"class":157},"sBMFI","sudo",[151,160,162],{"class":161},"sfazB"," \u002Fopt\u002Ffsbackup\u002Fbin\u002Ffs-schedule-apply.sh\n",[100,164,165,166,168,169,171],{},"This reads ",[104,167,45],{}," and writes ",[104,170,126],{}," drop-ins for each enabled timer, then reloads systemd.",[117,173,175],{"id":174},"schedule-variables","Schedule variables",[177,178,179,192],"table",{},[180,181,182],"thead",{},[183,184,185,189],"tr",{},[186,187,188],"th",{},"Variable",[186,190,191],{},"Timer",[193,194,195,208,220,232,244,256,268],"tbody",{},[183,196,197,203],{},[198,199,200],"td",{},[104,201,202],{},"CLASS1_DAILY_SCHEDULE",[198,204,205],{},[104,206,207],{},"fsbackup-runner-daily@class1.timer",[183,209,210,215],{},[198,211,212],{},[104,213,214],{},"CLASS1_WEEKLY_SCHEDULE",[198,216,217],{},[104,218,219],{},"fsbackup-runner-weekly@class1.timer",[183,221,222,227],{},[198,223,224],{},[104,225,226],{},"CLASS1_MONTHLY_SCHEDULE",[198,228,229],{},[104,230,231],{},"fsbackup-runner-monthly@class1.timer",[183,233,234,239],{},[198,235,236],{},[104,237,238],{},"CLASS2_DAILY_SCHEDULE",[198,240,241],{},[104,242,243],{},"fsbackup-runner-daily@class2.timer",[183,245,246,251],{},[198,247,248],{},[104,249,250],{},"CLASS2_WEEKLY_SCHEDULE",[198,252,253],{},[104,254,255],{},"fsbackup-runner-weekly@class2.timer",[183,257,258,263],{},[198,259,260],{},[104,261,262],{},"CLASS2_MONTHLY_SCHEDULE",[198,264,265],{},[104,266,267],{},"fsbackup-runner-monthly@class2.timer",[183,269,270,275],{},[198,271,272],{},[104,273,274],{},"CLASS3_MONTHLY_SCHEDULE",[198,276,277],{},[104,278,279],{},"fsbackup-runner-monthly@class3.timer",[100,281,282],{},"Omit a variable (or leave it empty) to disable that timer. class3 supports monthly snapshots only — there are no daily or weekly timer units for class3.",[117,284,286],{"id":285},"oncalendar-format","OnCalendar= format",[100,288,289,290,297],{},"Values use the ",[291,292,296],"a",{"href":293,"rel":294},"https:\u002F\u002Fwww.freedesktop.org\u002Fsoftware\u002Fsystemd\u002Fman\u002Fsystemd.time.html",[295],"nofollow","systemd time format",":",[142,299,301],{"className":144,"code":300,"language":146,"meta":147,"style":147},"CLASS1_DAILY_SCHEDULE=\"*-*-* 01:45\"        # every day at 01:45\nCLASS1_WEEKLY_SCHEDULE=\"Sat *-*-* 02:00\"   # every Saturday at 02:00\nCLASS1_MONTHLY_SCHEDULE=\"*-*-01 03:00\"     # 1st of every month at 03:00\n",[104,302,303,324,341],{"__ignoreMap":147},[151,304,305,308,312,315,318,320],{"class":153,"line":154},[151,306,202],{"class":307},"sTEyZ",[151,309,311],{"class":310},"sMK4o","=",[151,313,314],{"class":310},"\"",[151,316,317],{"class":161},"*-*-* 01:45",[151,319,314],{"class":310},[151,321,323],{"class":322},"sHwdD","        # every day at 01:45\n",[151,325,327,329,331,333,336,338],{"class":153,"line":326},2,[151,328,214],{"class":307},[151,330,311],{"class":310},[151,332,314],{"class":310},[151,334,335],{"class":161},"Sat *-*-* 02:00",[151,337,314],{"class":310},[151,339,340],{"class":322},"   # every Saturday at 02:00\n",[151,342,344,346,348,350,353,355],{"class":153,"line":343},3,[151,345,226],{"class":307},[151,347,311],{"class":310},[151,349,314],{"class":310},[151,351,352],{"class":161},"*-*-01 03:00",[151,354,314],{"class":310},[151,356,357],{"class":322},"     # 1st of every month at 03:00\n",[117,359,361],{"id":360},"default-schedule","Default schedule",[142,363,365],{"className":144,"code":364,"language":146,"meta":147,"style":147},"CLASS1_DAILY_SCHEDULE=\"*-*-* 01:45\"\nCLASS1_WEEKLY_SCHEDULE=\"Sat *-*-* 02:00\"\nCLASS1_MONTHLY_SCHEDULE=\"*-*-01 03:00\"\n\nCLASS2_DAILY_SCHEDULE=\"*-*-* 02:15\"\nCLASS2_WEEKLY_SCHEDULE=\"Sat *-*-* 02:30\"\n\nCLASS3_MONTHLY_SCHEDULE=\"*-*-01 04:00\"\n",[104,366,367,380,392,404,411,425,439,444],{"__ignoreMap":147},[151,368,369,371,373,375,377],{"class":153,"line":154},[151,370,202],{"class":307},[151,372,311],{"class":310},[151,374,314],{"class":310},[151,376,317],{"class":161},[151,378,379],{"class":310},"\"\n",[151,381,382,384,386,388,390],{"class":153,"line":326},[151,383,214],{"class":307},[151,385,311],{"class":310},[151,387,314],{"class":310},[151,389,335],{"class":161},[151,391,379],{"class":310},[151,393,394,396,398,400,402],{"class":153,"line":343},[151,395,226],{"class":307},[151,397,311],{"class":310},[151,399,314],{"class":310},[151,401,352],{"class":161},[151,403,379],{"class":310},[151,405,407],{"class":153,"line":406},4,[151,408,410],{"emptyLinePlaceholder":409},true,"\n",[151,412,414,416,418,420,423],{"class":153,"line":413},5,[151,415,238],{"class":307},[151,417,311],{"class":310},[151,419,314],{"class":310},[151,421,422],{"class":161},"*-*-* 02:15",[151,424,379],{"class":310},[151,426,428,430,432,434,437],{"class":153,"line":427},6,[151,429,250],{"class":307},[151,431,311],{"class":310},[151,433,314],{"class":310},[151,435,436],{"class":161},"Sat *-*-* 02:30",[151,438,379],{"class":310},[151,440,442],{"class":153,"line":441},7,[151,443,410],{"emptyLinePlaceholder":409},[151,445,447,449,451,453,456],{"class":153,"line":446},8,[151,448,274],{"class":307},[151,450,311],{"class":310},[151,452,314],{"class":310},[151,454,455],{"class":161},"*-*-01 04:00",[151,457,379],{"class":310},[100,459,460,461,464,465,115],{},"The retention timer (",[104,462,463],{},"fsbackup-retention.timer",") runs at 06:00 daily — after the runner timers — and is not configurable via ",[104,466,45],{},[117,468,470],{"id":469},"checking-timer-status","Checking timer status",[142,472,474],{"className":144,"code":473,"language":146,"meta":147,"style":147},"systemctl list-timers | grep fsbackup\n",[104,475,476],{"__ignoreMap":147},[151,477,478,481,484,487,490],{"class":153,"line":154},[151,479,480],{"class":157},"systemctl",[151,482,483],{"class":161}," list-timers",[151,485,486],{"class":310}," |",[151,488,489],{"class":157}," grep",[151,491,492],{"class":161}," fsbackup\n",[117,494,496],{"id":495},"enabling-and-disabling-timers","Enabling and disabling timers",[100,498,499,500,503],{},"Timers are enabled\u002Fdisabled by ",[104,501,502],{},"fs-schedule-apply.sh"," based on which variables are set. To manually disable a timer:",[142,505,507],{"className":144,"code":506,"language":146,"meta":147,"style":147},"sudo systemctl disable --now fsbackup-runner-monthly@class2.timer\n",[104,508,509],{"__ignoreMap":147},[151,510,511,513,516,519,522],{"class":153,"line":154},[151,512,158],{"class":157},[151,514,515],{"class":161}," systemctl",[151,517,518],{"class":161}," disable",[151,520,521],{"class":161}," --now",[151,523,524],{"class":161}," fsbackup-runner-monthly@class2.timer\n",[100,526,527,528,530,531,115],{},"To re-enable, set the schedule variable in ",[104,529,45],{}," and run ",[104,532,502],{},[534,535,536],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}",{"title":147,"searchDepth":154,"depth":326,"links":538},[539,540,541,542,543,544],{"id":119,"depth":326,"text":120},{"id":174,"depth":326,"text":175},{"id":285,"depth":326,"text":286},{"id":360,"depth":326,"text":361},{"id":469,"depth":326,"text":470},{"id":495,"depth":326,"text":496},"How to configure the backup schedule using systemd timers and OnCalendar= values in fsbackup.conf.","md",null,{},{"title":53,"description":545},"fOW5JrIUBkoFJBIgB14PVet-wRSkb7lCGqWz5pSGusU",[552,554],{"title":49,"path":50,"stem":51,"description":553,"children":-1},"How to define backup targets in targets.yml — hosts, sources, classes, and rsync options.",{"title":63,"path":64,"stem":65,"description":555,"children":-1},"Using the fsbackup web interface to monitor backups, browse snapshots, and run jobs.",1775923865773]