Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 21 additions & 25 deletions packages/ns-plug/files/send-backup
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,29 @@ set -e

WORK_DIR="/var/backup"
BACKUP="$WORK_DIR/backup-$(date +%s).tar.gz"
EXTRACTED_BACKUP="$WORK_DIR/extracted"
MD5="$WORK_DIR/md5"
MD5_LAST="/etc/backup.md5"
PASSPHRASE="/etc/backup.pass"

function send {
if [ -s $PASSPHRASE ]; then
cleanup() {
ret=$?
rm -f "$BACKUP" "$BACKUP.gpg" "$MD5"
rm -rf "$EXTRACTED_BACKUP"
exit "$ret"
}
trap cleanup EXIT

send() {
if [ -s "$PASSPHRASE" ]; then
# send encrypted backup
gpg --batch -c --yes --passphrase-file $PASSPHRASE $BACKUP
gpg --batch -c --yes --passphrase-file "$PASSPHRASE" "$BACKUP"
remote-backup upload "$BACKUP.gpg"
mv $MD5 $MD5_LAST
mv "$MD5" "$MD5_LAST"
else
# password not set, abort upload
exit 4
fi
rm -f "$BACKUP" "$BACKUP.gpg"
exit $?
}

SYSTEM_ID=$(uci -q get ns-plug.config.system_id)
Expand All @@ -38,27 +45,16 @@ if [ -z "$SYSTEM_ID" ] || [ -z "$SYSTEM_SECRET" ]; then
exit 0
fi

# hack: avoid to backup non-config file
if [ -f /etc/acme/http.header ]; then
mv /etc/acme/http.header /tmp
fi

# Create the backup
mkdir -p $WORK_DIR
sysupgrade -k -b $BACKUP 2>/dev/null
md5sum $BACKUP | awk '{print $1}' > $MD5
mkdir -p "$WORK_DIR"
sysupgrade -q -k -b "$BACKUP"

# hack: restore acme working file
if [ -f /tmp/http.header ]; then
mv /tmp/http.header /etc/acme
fi

# Send backup if there is no md5 saved
if [ ! -f "$MD5_LAST" ]; then
send
fi
rm -rf "$EXTRACTED_BACKUP"
mkdir -p "$EXTRACTED_BACKUP"
tar -zxf "$BACKUP" -C "$EXTRACTED_BACKUP"
find "$EXTRACTED_BACKUP" -type f -exec md5sum {} \; > "$MD5"

# Send backup if the md5 is changed
if [ -f "$MD5_LAST" ] && [ "$(cat $MD5_LAST)" != "$(cat $MD5)" ]; then
# Send backup if there is no md5 saved, or if the md5 changed
if [ ! -f "$MD5_LAST" ] || ! md5sum -c -s "$MD5_LAST"; then
send
fi
Loading