You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.8 KiB
78 lines
2.8 KiB
2 years ago
|
#!/bin/sh
|
||
|
|
||
|
# This spell alters the location of thy Bitcoin data chamber on your system.
|
||
|
|
||
|
# Check if a command needs to be re-invoked with sudo
|
||
|
retry_with_sudo() {
|
||
|
echo "Permission denied. Invoking the power of the super user..."
|
||
|
sudo "$@"
|
||
|
if [ $? -ne 0 ]; then
|
||
|
echo "Failed to execute with elevated privileges. Make certain thou hast the necessary permissions and try again."
|
||
|
exit 1
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
# Check for the bitcoin.conf file
|
||
|
if [ ! -f "$HOME/.bitcoin/bitcoin.conf" ]; then
|
||
|
echo "Unable to locate bitcoin.conf. Canst thou provide its location?"
|
||
|
read bitcoin_conf
|
||
|
if [ ! -f "$bitcoin_conf" ]; then
|
||
|
echo "bitcoin.conf file not found at the provided location. The spell must end here."
|
||
|
exit 1
|
||
|
fi
|
||
|
else
|
||
|
bitcoin_conf="$HOME/.bitcoin/bitcoin.conf"
|
||
|
fi
|
||
|
|
||
|
# Get the current Bitcoin directory
|
||
|
current_directory=$(grep "datadir" "$bitcoin_conf" | cut -d'=' -f2)
|
||
|
if [ -z "$current_directory" ]; then
|
||
|
current_directory="$HOME/.bitcoin"
|
||
|
else
|
||
|
# Confirm that the directory actually exists
|
||
|
if [ ! -d "$current_directory" ]; then
|
||
|
echo "The Bitcoin data chamber specified in bitcoin.conf doth not exist. Please ensure the correctness of the 'datadir' value in bitcoin.conf."
|
||
|
exit 1
|
||
|
fi
|
||
|
echo "Verified the existence of the Bitcoin data chamber at: $current_directory"
|
||
|
fi
|
||
|
|
||
|
# Ask for the new directory
|
||
|
echo "Enter the new haven for thy Bitcoin data:"
|
||
|
read new_directory
|
||
|
|
||
|
# Create the new directory if it does not exist
|
||
|
if [ ! -d "$new_directory" ]; then
|
||
|
mkdir "$new_directory" || retry_with_sudo mkdir "$new_directory"
|
||
|
fi
|
||
|
|
||
|
# Ask user what to move
|
||
|
echo "What wouldst thou like to move to the new Bitcoin data haven?"
|
||
|
echo "1. The entire Bitcoin data chamber"
|
||
|
echo "2. Only the blockchain data"
|
||
|
echo "3. Move naught"
|
||
|
|
||
|
read move_choice
|
||
|
|
||
|
case "$move_choice" in
|
||
|
1)
|
||
|
echo "Moving the entire Bitcoin data chamber..."
|
||
|
mv "$current_directory"/* "$new_directory" || retry_with_sudo mv "$current_directory"/* "$new_directory"
|
||
|
;;
|
||
|
2)
|
||
|
echo "Moving only the blockchain data..."
|
||
|
mv "$current_directory/blocks" "$current_directory/chainstate" "$new_directory" || retry_with_sudo mv "$current_directory/blocks" "$current_directory/chainstate" "$new_directory"
|
||
|
;;
|
||
|
3)
|
||
|
echo "Moving naught..."
|
||
|
;;
|
||
|
*)
|
||
|
echo "Invalid choice, the spell ends here without moving anything."
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
# Update the bitcoin.conf file to point to the new directory
|
||
|
awk -v path="$new_directory" '!/datadir/ {print} /datadir/ {$3 = path; print}' "$bitcoin_conf" | tee "$bitcoin_conf" >/dev/null || { retry_with_sudo awk -v path="$new_directory" '!/datadir/ {print} /datadir/ {$3 = path; print}' "$bitcoin_conf" | sudo tee "$bitcoin_conf" >/dev/null; }
|
||
|
|
||
|
echo "The Bitcoin data chamber now resides in: $new_directory"
|