LibrePortal/scripts/cli/commands/backup/cli_backup_header.sh
librelad 4ce0340ef8 refactor(backup): replace per-app cron stagger with task-queue scheduler
Application backups were driven by one crontab entry per app, each offset by
id * CFG_BACKUP_CRONTAB_APP_INTERVAL minutes. That minute offset is written
straight into cron's 0-59 minute field, so past ~20 apps it overflowed into
an invalid entry that silently never fired, and the fixed spacing could not
serialize backups that ran longer than the gap.

Replace it with a single daily entry (`libreportal backup scheduled`) that
enqueues a backup task per enabled app. The existing systemd task processor
drains them serially — no minute overflow, real serialization, and backups
are now visible/cancellable in the Tasks UI. Per-app enable is read from
CFG_<APP>_BACKUP at schedule time instead of being mirrored into crontab.

Removes the stagger machinery (timing/setup/check/remove scripts), the
now-unused cron_jobs table + insert, and the CFG_BACKUP_CRONTAB_APP_INTERVAL
config knob and its WebUI field.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Signed-off-by: librelad <librelad@digitalangels.vip>
2026-05-22 14:34:35 +01:00

49 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
cliShowBackupHelp()
{
isHeader "LibrePortal Backup Commands"
echo "backup app create <app_name>"
echo " Snapshot an app to all enabled locations."
echo ""
echo "backup app schedule <app_name>"
echo " Queue a backup task via the WebUI task processor."
echo ""
echo "backup app list <app_name>"
echo " List backups for an app across all locations."
echo ""
echo "backup app delete <app_name> <location_idx>:<snapshot_id>"
echo " Delete a single backup from one location."
echo ""
echo "backup app delete_all <app_name>"
echo " Delete every backup for an app (skips append-only locations)."
echo ""
echo "backup all"
echo " Snapshot every installed app."
echo ""
echo "backup scheduled"
echo " Queue a backup for every app with backups enabled (daily cron entry)."
echo ""
echo "backup location add <name> [type]"
echo " Add a new backup location. Type defaults to 'local'."
echo " Types: local, sftp, rest, s3, b2, gs, azure, rclone"
echo ""
echo "backup location remove <idx>"
echo " Remove a backup location by index."
echo ""
echo "backup location list"
echo " Show all configured locations."
echo ""
echo "backup location init"
echo " Initialize repos for all enabled locations (generates passwords)."
echo ""
echo "backup location check [pct]"
echo " Run restic integrity check across enabled locations."
echo ""
echo "backup location stats [idx]"
echo " Show storage statistics for a location (default: 1)."
echo ""
echo "backup verify [pct]"
echo " Alias for 'backup location check'."
}