commit
861d0ee4d5
@ -0,0 +1,48 @@
|
||||
#!/bin/bash
|
||||
|
||||
sudo echo ">>> Initialising"
|
||||
|
||||
PREFIX=$2
|
||||
|
||||
if [[ ! "$PREFIX" == "" ]]; then
|
||||
PREFIX=$2-
|
||||
fi
|
||||
|
||||
if [[ `id -u` == 0 ]]; then
|
||||
echo "WARNING: Running as root? This might not be what you want..."
|
||||
fi
|
||||
|
||||
ROOT=~/.backups/disk
|
||||
|
||||
if [[ ! -d $ROOT ]]; then
|
||||
mkdir -p $ROOT
|
||||
fi
|
||||
|
||||
if stat "$1"; then
|
||||
OUTPUT=$ROOT/$PREFIX`basename $1`-`date +%Y-%m-%d-%H%M%S`.disk
|
||||
sudo umount "$1" &> /dev/null
|
||||
echo ">>> Will backup disk '$1' to file $OUTPUT"
|
||||
read -p "Is this okay (y/N)? " -n 1 -r
|
||||
echo
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
set -e
|
||||
set -o pipefail
|
||||
if sudo dd "if=$1" conv=sync,noerror status=progress | gzip -9 -c | openssl aes-192-cbc -salt -e > $OUTPUT; then
|
||||
echo ">>> Calculating hash"
|
||||
sha256sum $OUTPUT > $OUTPUT.sha256
|
||||
echo ">>> Signing image"
|
||||
gpg --detach-sign -o $OUTPUT.sig $OUTPUT
|
||||
echo ">>> Setting permissions"
|
||||
sudo chmod 0444 $OUTPUT
|
||||
sudo chmod 0444 $OUTPUT.sha256
|
||||
sudo chmod 0444 $OUTPUT.sig
|
||||
echo ">>> Done"
|
||||
else
|
||||
echo "ERROR - Stopping"
|
||||
fi
|
||||
else
|
||||
echo "Doing nothing"
|
||||
fi
|
||||
else
|
||||
echo "ERROR - File not found"
|
||||
fi
|
@ -0,0 +1,15 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [[ -f "$1" ]]; then
|
||||
[[ `stat -c "%a" "$1"` != 444 ]] && echo "WARNING: $1 permissions invalid"
|
||||
[[ `stat -c "%a" "$1.sha256"` != 444 ]] && echo "WARNING: $1.sha256 permissions invalid"
|
||||
if sha256sum -c "$1.sha256" && gpg --verify "$1.sig"; then
|
||||
echo " -> Okay"
|
||||
else
|
||||
echo "ERROR - Validity check failed"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "ERROR - File not found"
|
||||
exit 1
|
||||
fi
|
@ -0,0 +1,33 @@
|
||||
#!/bin/bash
|
||||
|
||||
sudo echo ">>> Initialising"
|
||||
|
||||
if [[ `id -u` == 0 ]]; then
|
||||
echo "WARNING: Running as root? This might not be what you want..."
|
||||
fi
|
||||
|
||||
SCRIPTPATH="$( cd "$(dirname "$0")" ; pwd -P )"
|
||||
|
||||
echo ">>> Checking validity of image"
|
||||
|
||||
if $SCRIPTPATH/disk-backup-check "$1"; then
|
||||
if stat "$2"; then
|
||||
sudo umount "$2" &> /dev/null
|
||||
set -e
|
||||
set -o pipefail
|
||||
echo ">>> Will restore $1 to $2"
|
||||
read -p "Is this okay (y/N)? " -n 1 -r
|
||||
echo
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
if cat "$1" | openssl aes-192-cbc -salt -d | gunzip -c | sudo dd conv=sync,noerror "of=$2" status=progress; then
|
||||
echo ">>> Done"
|
||||
else
|
||||
echo "ERROR - Failure, corruption likely"
|
||||
fi
|
||||
else
|
||||
echo "Doing nothing"
|
||||
fi
|
||||
else
|
||||
echo "ERROR - No such device"
|
||||
fi
|
||||
fi
|
Loading…
Reference in new issue