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

151 lines
4.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"
echo "lnd.rescue.sh [backup|restore]"
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
# 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
# offer SCP for download
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"
echo "anymore bacause 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 ""
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
echo "If you have a lnd-rescue backup file on your laptop you can now"
echo "upload it and restore the your old LND state."
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."
echo
echo "PRESS ENTER when upload is done. Use CTRL-C to abort."
fi
if [ ${countZips} -gt 1 ]; then
echo "!! WARNING !!"
echo "There are multiple lnd-rescue files in directory /home/admin."
2019-03-17 00:24:06 +01:00
echo "Make sure there is only one file to work with and start again."
echo
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
echo "WARNING: This will delete the actual LND state/funds of this RaspiBlitz."
echo
echo "PRESS ENTER to start restore. Use CTRL-C to abort."
fi
read key
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."
echo "Keep in mind that some channels got forced closed by channel partners in the meanwhile."
echo
else
echo "unknown parameter '${mode}' - exit"
fi