raspiblitz/home.admin/config.scripts/lnd.rescue.sh

169 lines
5 KiB
Bash
Raw Normal View History

2019-03-16 23:47:22 +01:00
#!/bin/bash
# command info
if [ $# -eq 0 ] || [ "$1" = "-h" ] || [ "$1" = "-help" ]; then
echo "small rescue script to to backup or restore"
2019-04-16 18:05:03 +01:00
echo "lnd.rescue.sh [backup|restore] [?no-download]"
2019-03-16 23:47:22 +01:00
exit 1
fi
localip=$(ip addr | grep 'state UP' -A2 | tail -n1 | awk '{print $2}' | cut -f1 -d'/')
mode="$1"
if [ ${mode} = "backup" ]; then
################################
# BACKUP
################################
echo "*** LND.RESCUE --> BACKUP"
# stop LND
echo "Stopping lnd..."
sudo systemctl stop lnd
sleep 5
echo "OK"
echo
# zip it
sudo tar -zcvf /home/admin/lnd-rescue.tar.gz /mnt/hdd/lnd
sudo chown admin:admin /home/admin/lnd-rescue.tar.gz
2019-04-16 13:22:29 +01:00
# delete old backups
2019-04-26 14:04:51 +02:00
rm /home/admin/lnd-rescue-*.tar.gz 2>/dev/null
2019-04-16 13:22:29 +01:00
2019-03-16 23:47:22 +01:00
# name with md5 checksum
2019-03-17 00:19:31 +01:00
md5checksum=$(md5sum /home/admin/lnd-rescue.tar.gz | head -n1 | cut -d " " -f1)
2019-03-16 23:47:22 +01:00
mv /home/admin/lnd-rescue.tar.gz /home/admin/lnd-rescue-${md5checksum}.tar.gz
2019-04-16 18:05:03 +01:00
# stop here in case of 'no-download' option
if [ "${2}" == "no-download" ]; then
echo "No download of LND data requested."
exit 0
fi
2019-03-16 23:47:22 +01:00
# offer SCP for download
2019-04-26 14:04:51 +02:00
clear
2019-03-17 03:33:42 +01:00
echo
2019-03-16 23:47:22 +01:00
echo "****************************"
echo "* DOWNLOAD THE BACKUP FILE *"
echo "****************************"
echo
echo "RUN THE FOLLOWING COMMAND ON YOUR LAPTOP IN NEW TERMINAL:"
echo "scp -r admin@${localip}:/home/admin/lnd-rescue-*.tar.gz ./"
echo ""
echo "Use password A to authenticate file transfere."
echo
2019-03-17 00:56:42 +01:00
echo "BEWARE: Your Lightning node is now stopped. So its safe to backup the data and restore it"
echo "later on - for example on a fresh RaspiBlitz. But once this Lightning node gets started"
echo "again by 'sudo systemctl start lnd' or a reboot its not adviced to restore the backup file"
2019-04-09 14:04:22 +01:00
echo "anymore because it cointains outdated channel data and can lead to loss of channel funds."
2019-03-16 23:47:22 +01:00
elif [ ${mode} = "restore" ]; then
################################
# RESTORE
################################
echo "*** LND.RESCUE --> RESTORE"
echo ""
2019-04-16 13:22:29 +01:00
# delete old backups
rm /home/admin/lnd-rescue-*.tar.gz
2019-03-16 23:47:22 +01:00
filename=""
while [ ${#filename} -eq 0 ]
do
2019-03-17 00:24:06 +01:00
countZips=$(sudo ls /home/admin/lnd-rescue-*.tar.gz 2>/dev/null | grep -c 'lnd-rescue')
2019-03-16 23:47:22 +01:00
if [ ${countZips} -lt 1 ]; then
echo "**************************"
echo "* UPLOAD THE BACKUP FILE *"
echo "**************************"
echo "If you have a lnd-rescue backup file on your laptop you can now"
2019-04-16 02:57:18 +01:00
echo "upload it and restore the your latest LND state."
echo
echo "CAUTION: Dont restore old LND states - risk of loosing funds!"
2019-03-16 23:47:22 +01:00
echo
echo "To make upload open a new terminal on your laptop,"
echo "change into the directory where your lnd-rescue file is and"
echo "COPY, PASTE AND EXECUTE THE FOLLOWING COMMAND:"
2019-03-17 00:26:09 +01:00
echo "scp -r ./lnd-rescue-*.tar.gz admin@${localip}:/home/admin/"
2019-03-16 23:47:22 +01:00
echo ""
echo "Use password A to authenticate file transfere."
2019-04-16 13:22:29 +01:00
echo "PRESS ENTER when upload is done. Enter x & ENTER to cancel."
2019-03-16 23:47:22 +01:00
fi
if [ ${countZips} -gt 1 ]; then
echo "!! WARNING !!"
echo "There are multiple lnd-rescue files in directory /home/admin."
2019-04-16 13:22:29 +01:00
echo "Make sure you upload only one tar.gz-file and start again."
2019-03-17 00:24:06 +01:00
echo
2019-04-16 13:22:29 +01:00
echo "PRESS ENTER to continue."
read key
2019-03-16 23:47:22 +01:00
exit 1
fi
if [ ${countZips} -eq 1 ]; then
2019-03-17 00:28:14 +01:00
clear
2019-03-17 00:29:58 +01:00
echo
echo "**************************"
echo "* RESTORING BACKUP FILE *"
echo "**************************"
echo
2019-03-17 00:31:20 +01:00
2019-03-16 23:47:22 +01:00
filename=$(sudo ls /home/admin/lnd-rescue-*.tar.gz)
echo "OK -> found file to restore: ${filename}"
md5checksum=$(md5sum ${filename} | head -n1 | cut -d " " -f1)
isCorrect=$(echo ${filename} | grep -c ${md5checksum})
if [ ${isCorrect} -eq 1 ]; then
echo "OK -> checksum looks good: ${md5checksum}"
else
echo "!!! FAIL -> Checksum not correct."
echo "Maybe transfere failed? Continue on your own risk!"
echo "Recommend to abort and upload again!"
fi
echo
2019-03-28 15:58:57 +01:00
echo "WARNING: This will delete/overwrite the LND state/funds of this RaspiBlitz."
2019-03-16 23:47:22 +01:00
echo
2019-04-16 13:22:29 +01:00
echo "PRESS ENTER to start restore. Enter x & ENTER to cancel."
2019-03-16 23:47:22 +01:00
fi
read key
2019-04-16 13:22:29 +01:00
if [ "${key}" == "x" ]; then
exit 1
fi
2019-03-16 23:47:22 +01:00
done
# stop LND
echo "Stopping lnd..."
2019-03-17 00:28:14 +01:00
sudo systemctl stop lnd
2019-03-16 23:47:22 +01:00
sleep 5
echo "OK"
echo
# clean DIR
echo "Cleaning LND data ..."
sudo rm -r /mnt/hdd/lnd/*
echo "OK"
echo
# unpack zip
2019-03-17 00:31:20 +01:00
echo "Restoring LND data from ${filename} ..."
2019-03-17 00:32:03 +01:00
sudo tar -xf ${filename} -C /
2019-03-17 00:34:25 +01:00
sudo chown -R bitcoin:bitcoin /mnt/hdd/lnd
2019-03-16 23:47:22 +01:00
echo "OK"
echo
# start LND
echo "Starting lnd..."
sudo systemctl start lnd
echo "OK"
echo
echo "DONE - please check if LND starts up correctly with restored state and funds."
2019-04-16 02:57:18 +01:00
echo "Keep in mind that some channels maybe forced closed in the meanwhile."
2019-03-16 23:47:22 +01:00
echo
else
echo "unknown parameter '${mode}' - exit"
fi