Skip to content

Instantly share code, notes, and snippets.

@Leo-PL
Created April 22, 2020 22:29
Show Gist options
  • Save Leo-PL/8430f1701209b0ffde6904368b170890 to your computer and use it in GitHub Desktop.
Save Leo-PL/8430f1701209b0ffde6904368b170890 to your computer and use it in GitHub Desktop.
OpenWrt backup script with git configuration versioning
#!/bin/bash
DATE=`date -Idate`
USER="root"
HOSTS=("<host1>" ... "<hostn>")
commit_single_host_to_git ()
{
local host=${1}
local backup_filename="backup-${host}-${DATE}.tar.gz"
if [ -f ${backup_filename} ]; then
pushd ../git
git checkout ${host}
tar xf ../${DATE}/${backup_filename}
git add -A .
git commit -m "Backup ${DATE}"
popd
fi
}
backup_single_host ()
{
local host=${1}
local backup_filename="backup-${host}-${DATE}.tar.gz"
if [ ! -f ${backup_filename} ]; then
echo "${host}: Backing up..."
ssh ${USER}@${host} 'sysupgrade --create-backup -' > ${backup_filename};
if [ $? -ne 0 ]; then
echo "${host}: Backup failed."
rm ${backup_filename}
fi
else
echo "${host}: Backed up, skipping."
fi
local flashdump_filename="flashdump-${host}-${DATE}.bin.gz"
if [ ! -f ${flashdump_filename} ]; then
echo "${host}: Dumping flash..."
ssh ${USER}@${host} '/root/dump_flash.sh' > ${flashdump_filename};
if [ $? -ne 0 ]; then
echo "${host}: Flash dump failed."
rm ${flashdump_filename}
fi
else
echo "${host}: Flash already dumped, skipping."
fi
local pkglist_filename="pkglist-${host}-${DATE}.txt"
if [ ! -f ${pkglist_filename} ]; then
echo "${host}: Saving package list"
ssh ${USER}@${host} 'opkg list-installed' > ${pkglist_filename};
if [ $? -ne 0 ]; then
echo "${host}: Saving package list failed."
rm ${pkglist_filename}
fi
else
echo "${host}: Packages already saved, skipping."
fi
echo "${host}: Done."
}
set -o pipefail
mkdir -p ${DATE}
cd ${DATE}
for host in ${HOSTS[@]}; do
backup_single_host ${host} &
done
wait
for host in ${HOSTS[@]}; do
commit_single_host_to_git ${host}
done
#!/bin/sh
cat /dev/mtd0 /dev/mtd5 /dev/mtd4 | gzip -c
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment