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>
49 lines
1.7 KiB
Bash
Executable File
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'."
|
|
}
|