Created
April 22, 2020 22:29
-
-
Save Leo-PL/8430f1701209b0ffde6904368b170890 to your computer and use it in GitHub Desktop.
OpenWrt backup script with git configuration versioning
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/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 |
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 | |
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