diff --git a/scripts/backup.sh b/scripts/backup.sh index 281a2bb..6fa1784 100755 --- a/scripts/backup.sh +++ b/scripts/backup.sh @@ -3,7 +3,7 @@ # name of the ethernet gadget interface on the host UNIT_HOSTNAME=${1:-10.0.0.2} # output backup zip file -OUTPUT=${2:-pwnagotchi-backup.zip} +OUTPUT=${2:-pwnagotchi-backup.tgz} # username to use for ssh USERNAME=${3:-pi} # what to backup @@ -19,38 +19,10 @@ FILES_TO_BACKUP=( /home/pi/.bashrc ) -if ! type "zip" >/dev/null 2>&1; then - echo "This script requires zip, please resolve and try again" - exit 1 -fi - ping -c 1 "${UNIT_HOSTNAME}" >/dev/null || { echo "@ unit ${UNIT_HOSTNAME} can't be reached, make sure it's connected and a static IP assigned to the USB interface." exit 1 } echo "@ backing up $UNIT_HOSTNAME to $OUTPUT ..." - -ssh "${USERNAME}@${UNIT_HOSTNAME}" "sudo rm -rf /tmp/backup && sudo rm -rf /tmp/backup.zip" > /dev/null - -for file in "${FILES_TO_BACKUP[@]}"; do - dir=$(dirname "$file") - - echo "@ copying $file to /tmp/backup$dir" - - ssh "${USERNAME}@${UNIT_HOSTNAME}" "mkdir -p /tmp/backup${dir}" > /dev/null - ssh "${USERNAME}@${UNIT_HOSTNAME}" "sudo cp -r ${file} /tmp/backup${dir}" > /dev/null -done - -ssh "${USERNAME}@${UNIT_HOSTNAME}" "sudo chown ${USERNAME}:${USERNAME} -R /tmp/backup" > /dev/null - -echo "@ pulling from $UNIT_HOSTNAME ..." - -rm -rf /tmp/backup -scp -rC "${USERNAME}@${UNIT_HOSTNAME}":/tmp/backup /tmp/ - -echo "@ compressing ..." - -zip -r -9 -q "$OUTPUT" /tmp/backup -rm -rf /tmp/backup - +ssh "${USERNAME}@${UNIT_HOSTNAME}" "sudo tar cv ${FILES_TO_BACKUP[@]}" | gzip -9 > "$OUTPUT" diff --git a/scripts/restore.sh b/scripts/restore.sh new file mode 100755 index 0000000..ca60a80 --- /dev/null +++ b/scripts/restore.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +# name of the ethernet gadget interface on the host +UNIT_HOSTNAME=${1:-10.0.0.2} +# output backup zip file +BACKUP=${2:-pwnagotchi-backup.tgz} +# username to use for ssh +USERNAME=${3:-pi} + +ping -c 1 "${UNIT_HOSTNAME}" >/dev/null || { + echo "@ unit ${UNIT_HOSTNAME} can't be reached, make sure it's connected and a static IP assigned to the USB interface." + exit 1 +} + +echo "@ restoring $BACKUP to $UNIT_HOSTNAME ..." +cat ${BACKUP} | ssh "${USERNAME}@${UNIT_HOSTNAME}" "sudo tar xzv -C /"