From dbffec2c4aba118a63aae10d24aed359d4e51472 Mon Sep 17 00:00:00 2001 From: Captain ALM Date: Fri, 30 Aug 2024 13:16:28 +0100 Subject: [PATCH] Finish adding the backup scripts. --- backup-image/copy.sh | 2 +- backup-image/move.sh | 2 +- backup-image/remove.sh | 2 +- backup-image/restore.sh | 2 +- backup-image/sync-all.sh | 30 ++++++++++++++++++++++++++++++ backup-image/sync.sh | 30 +++++++++++++++++++++++------- backup-image/verify-all.sh | 29 +++++++++++++++++++++++++++++ backup-image/verify.sh | 10 ++++++---- 8 files changed, 92 insertions(+), 15 deletions(-) create mode 100755 backup-image/sync-all.sh create mode 100755 backup-image/verify-all.sh diff --git a/backup-image/copy.sh b/backup-image/copy.sh index 5b962be..3dead94 100755 --- a/backup-image/copy.sh +++ b/backup-image/copy.sh @@ -12,7 +12,7 @@ else fi echo "Source Backup disk name: $1"; echo "Target Backup disk name: $2"; -echo "Sync storage disk root path: $ssrc"; +echo "Storage disk root path: $ssrc"; echo "Press Enter to Start..."; read; echo "Copying..."; diff --git a/backup-image/move.sh b/backup-image/move.sh index c29623c..e484444 100755 --- a/backup-image/move.sh +++ b/backup-image/move.sh @@ -12,7 +12,7 @@ else fi echo "Source Backup disk name: $1"; echo "Target Backup disk name: $2"; -echo "Sync storage disk root path: $ssrc"; +echo "Storage disk root path: $ssrc"; echo "Press Enter to Start..."; read; echo "Moving..."; diff --git a/backup-image/remove.sh b/backup-image/remove.sh index acce11b..336afad 100755 --- a/backup-image/remove.sh +++ b/backup-image/remove.sh @@ -11,7 +11,7 @@ else ssrc="$2"; fi echo "Source Backup disk name: $1"; -echo "Sync storage disk root path: $ssrc"; +echo "Storage disk root path: $ssrc"; echo "Press Enter to Start..."; read; echo "Deleting..."; diff --git a/backup-image/restore.sh b/backup-image/restore.sh index 32b6d14..0dd8176 100755 --- a/backup-image/restore.sh +++ b/backup-image/restore.sh @@ -17,7 +17,7 @@ if [ $? -ne 0 ]; then echo "Hashes do not match!"; exit 1; fi -(sha512sum "/mnt/tabls/$1.tbl" > "/tmp/a/$1.tbl.sum") && dd "if=/tmp/a/$1.tbl.sum" bs=128 count=1 "of=/mnt/hsums/$1-tbl.hash"; +(sha512sum "/mnt/tabls/$1.tbl" > "/tmp/a/$1.tbl.sum") && dd "if=/tmp/a/$1.tbl.sum" bs=128 count=1 "of=/tmp/a/$1-tbl.hash"; cmp -s "/tmp/a/$1-tbl.hash" "/mnt/hsums/$1-tbl.hash"; if [ $? -ne 0 ]; then echo "Partition hashes do not match!"; diff --git a/backup-image/sync-all.sh b/backup-image/sync-all.sh new file mode 100755 index 0000000..b67fbce --- /dev/null +++ b/backup-image/sync-all.sh @@ -0,0 +1,30 @@ +#/bin/bash +echo "Sync All Backups!"; +if [ $# -eq 0 ]; then + echo "Usage: sync-all.sh [Source disk root path]"; + exit 2; +fi +ssrc=""; +if [ -z $2 ]; then + ssrc="/mnt"; +else + ssrc="$2"; +fi +echo "Target disk root path: $1"; +echo "Source disk root path: $ssrc"; +if [[ "$3" != "ikwid" ]]; then + echo "Press Enter to Start..."; + read; +fi +rval=0; +for cf in $ssrc/tabls/*; do + if [ -e "$cf" ] && [ -f "$cf" ]; then + ./sync.sh $(basename "$cf" ".tbl") "$1" "$ssrc" "ikwid"; + if [ $? -ne 0 ]; then + echo "Sync failed: $cf"; + rval=1; + fi + fi +done +echo "Finished!"; +exit $rval; diff --git a/backup-image/sync.sh b/backup-image/sync.sh index ee5d076..b22779e 100755 --- a/backup-image/sync.sh +++ b/backup-image/sync.sh @@ -13,15 +13,31 @@ fi echo "Source Backup disk name: $1"; echo "Sync target disk root path: $2"; echo "Sync source disk root path: $ssrc"; -echo "Press Enter to Start..."; -read; +if [[ "$4" != "ikwid" ]]; then + echo "Press Enter to Start..."; + read; +fi mkdir -p /tmp/a; echo "Syncing..."; -cp -f "$ssrc/hsums/$1-gz.hash" "$2/hsums/$1-gz.hash"; -cp -f "$ssrc/hsums/$1-tbl.hash" "$2/hsums/$1-tbl.hash"; -cp -f "$ssrc/hsums/$1.hash" "$2/hsums/$1.hash"; -cp -f "$ssrc/parts/$1.part.gz" "$2/parts/$1.part.gz"; -cp -f "$ssrc/tabls/$1.tbl" "$2/tabls/$1.tbl"; +cmp -s "$ssrc/hsums/$1-tbl.hash" "$2/hsums/$1-tbl.hash" +sTbl=$?; +cmp -s "$ssrc/hsums/$1-gz.hash" "$2/hsums/$1-gz.hash"; +sPart=$?; +if [ $sPart -eq 0 ]; then + cmp -s "$ssrc/hsums/$1.hash" "$2/hsums/$1.hash"; + sPart=$?; +fi +if [ $sTbl -ne 0 ]; then + echo "Syncing: $1.tbl"; + cp -f "$ssrc/tabls/$1.tbl" "$2/tabls/$1.tbl"; + cp -f "$ssrc/hsums/$1-tbl.hash" "$2/hsums/$1-tbl.hash"; +fi +if [ $sPart -ne 0 ]; then + echo "Syncing: $1.part.gz"; + cp -f "$ssrc/hsums/$1-gz.hash" "$2/hsums/$1-gz.hash"; + cp -f "$ssrc/hsums/$1.hash" "$2/hsums/$1.hash"; + cp -f "$ssrc/parts/$1.part.gz" "$2/parts/$1.part.gz"; +fi echo "Verifying..."; cmp -s "$ssrc/hsums/$1-gz.hash" "$2/hsums/$1-gz.hash"; if [ $? -ne 0 ]; then diff --git a/backup-image/verify-all.sh b/backup-image/verify-all.sh new file mode 100755 index 0000000..8c4df7d --- /dev/null +++ b/backup-image/verify-all.sh @@ -0,0 +1,29 @@ +#/bin/bash +echo "Verify All Backups!"; +if [ $# -eq 0 ]; then + echo "Usage: verify-all.sh [Storage disk root path]"; + exit 2; +fi +ssrc=""; +if [ -z $1 ]; then + ssrc="/mnt"; +else + ssrc="$1"; +fi +echo "Storage disk root path: $ssrc"; +if [[ "$2" != "ikwid" ]]; then + echo "Press Enter to Start..."; + read; +fi +rval=0; +for cf in $ssrc/tabls/*; do + if [ -e "$cf" ] && [ -f "$cf" ]; then + ./verify.sh $(basename "$cf" ".tbl") "$ssrc" "ikwid"; + if [ $? -ne 0 ]; then + echo "Verify failed: $cf"; + rval=1; + fi + fi +done +echo "Finished!"; +exit $rval; diff --git a/backup-image/verify.sh b/backup-image/verify.sh index 077e0ae..e91a620 100755 --- a/backup-image/verify.sh +++ b/backup-image/verify.sh @@ -11,14 +11,16 @@ else ssrc="$2"; fi echo "Source Backup disk name: $1"; -echo "Sync storage disk root path: $ssrc"; -echo "Press Enter to Start..."; -read; +echo "Storage disk root path: $ssrc"; +if [[ "$3" != "ikwid" ]]; then + echo "Press Enter to Start..."; + read; +fi mkdir -p /tmp/a; echo "Verifying..."; echo "Calculating SHA512 sums..."; ((sha512sum "$ssrc/parts/$1.part.gz" > "/tmp/a/$1.part.gz.sum") && dd "if=/tmp/a/$1.part.gz.sum" bs=128 count=1 "of=/tmp/a/$1-gz.hash" && touch "/tmp/a/1.complete") & -((sha512sum "$ssrc/tabls/$1.tbl" > "/tmp/a/$1.tbl.sum") && dd "if=/tmp/a/$1.tbl.sum" bs=128 count=1 "of=/mnt/hsums/$1-tbl.hash" && touch "/tmp/a/2.complete") & +((sha512sum "$ssrc/tabls/$1.tbl" > "/tmp/a/$1.tbl.sum") && dd "if=/tmp/a/$1.tbl.sum" bs=128 count=1 "of=/tmp/a/$1-tbl.hash" && touch "/tmp/a/2.complete") & until [ -f "/tmp/a/1.complete" ] && [ -f "/tmp/a/2.complete" ]; do sleep 0.1; done; echo "Hashes:"; cat /tmp/a/*.sum;