From 390e12c0ba21858f2d4c967b769768d6d1b9bace Mon Sep 17 00:00:00 2001 From: Max Christian Pohle Date: Sun, 12 Jul 2020 00:45:52 +0200 Subject: Now successfully tested. --- systemd-zfs-partition-backup.sh | 50 +++++++++++++++---------------- systemd-zfs-partition-backup/AUR/PKGBUILD | 2 +- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/systemd-zfs-partition-backup.sh b/systemd-zfs-partition-backup.sh index aa3951f..2310414 100755 --- a/systemd-zfs-partition-backup.sh +++ b/systemd-zfs-partition-backup.sh @@ -1,14 +1,21 @@ #!/usr/bin/bash # Written in 2020 by Max Christian Pohle +# check for a configuration file and source it in if its there +test -f /etc/default/systemd-zfs-partition-backup &&\ + source /etc/default/systemd-zfs-partition-backup + +DISK_NAME=$1 +DISK_NAME_ESCAPED=$(systemd-escape "$DISK_NAME") + function beep() { test -f /usr/bin/beep &&\ env -u SUDO_GID -u SUDO_COMMAND -u SUDO_USER -u SUDO_UID /usr/bin/beep $@ } function fail() { - # logger -s -t "$0" "Backup '$1' -> '$2' failed." - logger -s "$@" + # logger -p debug -t "$0" "Backup '$1' -> '$2' failed." + logger -p debug "$@" beep -f 40 -l 500 # sudo -u max beep -f 523 -l 150 -n -f 54 -l 600 } @@ -24,36 +31,30 @@ function stop() { } +logger -p debug "disk: $DISK_NAME [esc]=> $DISK_NAME_ESCAPED" -# check for a configuration file and source it in if its there -test -f /etc/default/systemd-zfs-partition-backup &&\ - source /etc/default/systemd-zfs-partition-backup - -DISK_NAME=$1 -DISK_NAME_ESCAPED=$(systemd-escape "$DISK_NAME") - -logger "Disk: $DISK_NAME" -logger " : $DISK_NAME_ESCAPED (escaped)" +DATASETS_WITH_DISKNAME=($(zfs list -H -o name | grep $DISK_NAME)) -DATASETS_WITH_DISKNAME=$(zfs list -H -o name | grep $DISK_NAME) +if [ ${#DATASETS_WITH_DISKNAME[@]} -eq 0 ]; then + fail "No dataset found with '$DISK_NAME' as last part of its name."\ + "Please create such if you want to backup that partition." + exit 0 +fi - -[ -z "$DATASETS_WITH_DISKNAME" ] &&\ - (fail "no datasets found with name $DISK_NAME. Please create some." ; exit 1) - -logger "Datasets: $DATASETS_WITH_DISKNAME" +logger -p debug "${#DATASETS_WITH_DISKNAME[@]} Datasets: $DATASETS_WITH_DISKNAME" # iterate over all datasets for i in ${DATASETS_WITH_DISKNAME[@]}; do - logger "assertion: $(basename $i) == $DISK_NAME" + logger -p debug "assertion: $(basename $i) ?= $DISK_NAME" + # compare the 'tail' of the PATH against the disk name... if [ "$(basename $i)" == "$DISK_NAME" ]; then - start $DISK_NAME + start DISK_MOUNTPOINT="/media/$DISK_NAME" if ! findmnt $DISK_MOUNTPOINT; then - logger -s "Expected to find disk '$DISK_NAME' mounted under '$DISK_MOUNTPOINT'. But it is not there. Aborting backup." + logger -p debug "Expected to find disk '$DISK_NAME' mounted under '$DISK_MOUNTPOINT'. But it is not there. Aborting backup." beep -f 40 -l 500 exit 1 fi @@ -69,13 +70,12 @@ do findmnt -no source "$ZFS_MOUNTPOINT" ||\ (fail "Dataset $DATASET is not mounted at $ZFS_MOUNTPOINT" ; exit 1) - logger -s "Backup from '$DISK_MOUNTPOINT' -> '$ZFS_MOUNTPOINT' possible. Starting in 10 seconds..." - + logger -p debug "Backup from '$DISK_MOUNTPOINT' -> '$ZFS_MOUNTPOINT' possible. Starting..." beep -f 147 -l 120 -n -f 294 -l 200 -n -f 831 set -x rsync -ahoi -x --delete --info=all \ - "$DISK_MOUNTPOINT" "$ZFS_MOUNTPOINT" \ + "$DISK_MOUNTPOINT/" "$ZFS_MOUNTPOINT/" \ 2>&1 | tee $ZFS_MOUNTPOINT/backup-report.txt set +x @@ -87,12 +87,12 @@ do zfs diff $DATASET_LAST_SNAPSHOT > $ZFS_MOUNTPOINT_VERIFIED/"$SYSTEMD_ZFS_PARTITION_BACKUP_DIFF_FILENAME" if [ -n "$SYSTEMD_ZFS_PARTITION_BACKUP_EMAIL" ]; then - logger -s "Here comes a list of changes since your last backup: $LAST_SNAPSHOT" |\ + logger -p debug "Here comes a list of changes since your last backup: $LAST_SNAPSHOT" |\ mailx -A typesafe -a $ZFS_MOUNTPOINT_VERIFIED/"$SYSTEMD_ZFS_PARTITION_BACKUP_DIFF_FILENAME" -s 'Backup overview' "$SYSTEMD_ZFS_PARTITION_BACKUP_EMAIL" fi fi - stop $DISK_NAME + stop beep -f 831 -l 120 -n -f 294 -l 200 -n -f 147 fi diff --git a/systemd-zfs-partition-backup/AUR/PKGBUILD b/systemd-zfs-partition-backup/AUR/PKGBUILD index 8150e9b..b0fd026 100644 --- a/systemd-zfs-partition-backup/AUR/PKGBUILD +++ b/systemd-zfs-partition-backup/AUR/PKGBUILD @@ -13,7 +13,7 @@ depends=( 'mkinitcpio' ) source=("http://git.entwicklerseite.de/zfs-bash-tools/snapshot/zfs-bash-tools-master.tar.gz") -sha256sums=('a6089d8abb9c5a433f0f1513194b726f7c6072849891e1922cd664be79cc4df0') +sha256sums=('ef17307fcf662f867b98e6b5d883f2eb9fcd1f38205d516d9f85f53787ed58f1') package() { install -D zfs-bash-tools-master/${pkgname}.sh \ -- cgit v1.2.3