fix: refactored backup.sh script to not require root login

This commit is contained in:
Simone Margaritelli 2019-10-21 15:41:45 +02:00
parent 41ea0e0747
commit c954bf8ffa

View File

@ -4,8 +4,6 @@
UNIT_HOSTNAME=${1:-10.0.0.2} UNIT_HOSTNAME=${1:-10.0.0.2}
# output backup zip file # output backup zip file
OUTPUT=${2:-pwnagotchi-backup.zip} OUTPUT=${2:-pwnagotchi-backup.zip}
# temporary folder
TEMP_BACKUP_FOLDER=/tmp/pwnagotchi_backup
# what to backup # what to backup
FILES_TO_BACKUP=( FILES_TO_BACKUP=(
/root/brain.nn /root/brain.nn
@ -13,9 +11,6 @@ FILES_TO_BACKUP=(
/root/.api-report.json /root/.api-report.json
/root/handshakes /root/handshakes
/etc/pwnagotchi/ /etc/pwnagotchi/
/etc/hostname
/etc/hosts
/etc/motd
/var/log/pwnagotchi.log /var/log/pwnagotchi.log
) )
@ -26,17 +21,24 @@ ping -c 1 $UNIT_HOSTNAME >/dev/null || {
echo "@ backing up $UNIT_HOSTNAME to $OUTPUT ..." echo "@ backing up $UNIT_HOSTNAME to $OUTPUT ..."
rm -rf "$TEMP_BACKUP_FOLDER" ssh pi@$UNIT_HOSTNAME "sudo rm -rf /tmp/backup && sudo rm -rf /tmp/backup.zip" > /dev/null
for file in "${FILES_TO_BACKUP[@]}"; do for file in "${FILES_TO_BACKUP[@]}"; do
dir=$(dirname $file) dir=$(dirname $file)
echo " $file -> $TEMP_BACKUP_FOLDER$dir/"
mkdir -p "$TEMP_BACKUP_FOLDER/$dir" echo "@ copying $file to /tmp/backup$dir"
scp -Cr root@$UNIT_HOSTNAME:$file "$TEMP_BACKUP_FOLDER$dir/"
ssh pi@$UNIT_HOSTNAME "mkdir -p /tmp/backup$dir" > /dev/null
ssh pi@$UNIT_HOSTNAME "sudo cp -r $file /tmp/backup$dir" > /dev/null
done done
ZIPFILE="$PWD/$OUTPUT" echo "@ pulling from $UNIT_HOSTNAME ..."
pushd $PWD
cd "$TEMP_BACKUP_FOLDER" rm -rf /tmp/backup
zip -r -9 -q "$ZIPFILE" . scp -rC pi@$UNIT_HOSTNAME:/tmp/backup /tmp/
popd
echo "@ compressing ..."
zip -r -9 -q $OUTPUT /tmp/backup
rm -rf /tmp/backup