Created
May 7, 2021 12:19
-
-
Save velebit/071dd820b47ecfccbfea351c18e8e330 to your computer and use it in GitHub Desktop.
OpenWrt /etc/init.d/ script to backup and restore the rrd (collectd) database, to preserve data across reboots
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh /etc/rc.common | |
# OpenWrt /etc/init.d/ script to backup and restore the rrd (collectd) database, to preserve data across reboots | |
# | |
# | |
# howto: | |
# - upload this file as /etc/init.d/rrdbackup | |
# - (optional) adjust BACKUP_DIR below to point to a different target directory for the backup (e.g., a USB drive) | |
# - # chmod +x /etc/init.d/rrdbackup | |
# - # /etc/init.d/rrdbackup enable | |
# - # /etc/init.d/rrdbackup start | |
# - (optional) for periodic backups insert into crontab: | |
# 0 */6 * * * /etc/init.d/rrdbackup backup | |
# adjust interval to own taste (example above backs up every 6 hours) | |
# - (optional) add the backup target directory to /etc/sysupgrade.conf for the backup to be preserved across sysupgrades | |
# queue this init script to start (i.e., restore) right before collectd starts (80) | |
# and stop (i.e., backup) right after collectd stops (10): | |
START=79 | |
STOP=11 | |
# add commands "backup" to manually backup database (e.g. from cronjob) | |
# and "restore" to restore database (should not be needed in regular use) | |
EXTRA_COMMANDS="backup restore" | |
EXTRA_HELP="\ | |
backup Backup current rrd database | |
restore Restore current rrd database" | |
# directories and files | |
# RRD_DIR needs to be relative to root, i.e. no slash in front (to mitigate tar "leading '/'" warning) | |
RRD_DIR=tmp/rrd | |
BACKUP_DIR=/usr/share/collectd | |
BACKUP_FILE=rrdbackup.tgz | |
backup() { | |
mkdir -p "$BACKUP_DIR" | |
local TMP_FILE="$(mktemp -up "$BACKUP_DIR")" | |
tar -czf "$TMP_FILE" -C / "$RRD_DIR" | |
mv "$TMP_FILE" "$BACKUP_DIR/$BACKUP_FILE" | |
} | |
restore() { | |
[[ -f "$BACKUP_DIR/$BACKUP_FILE" ]] && tar -xzf "$BACKUP_DIR/$BACKUP_FILE" -C / | |
} | |
start() { | |
restore | |
} | |
stop() { | |
backup | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment