Created
January 8, 2021 02:57
-
-
Save tmkasun/2ec5afc44b3dff1daeb293447638e810 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 hidden or 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 (undocumented, should not be needed in regular use) | |
EXTRA_COMMANDS="backup restore" | |
EXTRA_HELP=" backup backup 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() { | |
local TMP_FILE=$(mktemp -u) | |
tar -czf $TMP_FILE -C / $RRD_DIR | |
mkdir -p $BACKUP_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