From b9cee5300e551053834fb9b4342a996ad6fb5c07 Mon Sep 17 00:00:00 2001 From: Andrew Miner Date: Thu, 10 Aug 2017 08:16:43 -0700 Subject: [PATCH] Correct problems with using Keychain for backup drive credentials --- bin/backup-init.sh | 7 +++---- bin/backup-mount.sh | 16 +++++++--------- bin/backup-run.sh | 16 ++++++++-------- bin/backup-unmount.sh | 4 ++-- 4 files changed, 20 insertions(+), 23 deletions(-) diff --git a/bin/backup-init.sh b/bin/backup-init.sh index 423deec..6d9fc3c 100755 --- a/bin/backup-init.sh +++ b/bin/backup-init.sh @@ -18,10 +18,9 @@ if [[ "$CONFIRM" != "Y" ]]; then exit 1 fi -security add-generic-password -a $USER -s backup-host -w "$HOST" -security add-generic-password -a $USER -s backup-share -w "$SHARE" -security add-generic-password -a $USER -s backup-username -w "$USERNAME" -security add-generic-password -a $USER -s backup-password -w "$PASSWORD" + +echo "afp://$USERNAME:$PASSWORD@$HOST/$SHARE" > ~/.backup-cred +chmod 600 ~/.backup-cred cp $BIN_DIR/backup-commands.default.sh "$BACKUP_COMMANDS" chmod u+x "$BACKUP_COMMANDS" diff --git a/bin/backup-mount.sh b/bin/backup-mount.sh index 47fa8ee..51c3072 100755 --- a/bin/backup-mount.sh +++ b/bin/backup-mount.sh @@ -1,21 +1,19 @@ -#!/bin/bash +#!/bin/bash -x function die { echo $*; exit 1 } LOCAL_MOUNT="$HOME/.backup-drive" -HOST=$(security find-generic-password -a $USER -s backup-host -w) -SHARE=$(security find-generic-password -a $USER -s backup-share -w) -USERNAME=$(security find-generic-password -a $USER -s backup-username -w) -PASSWORD=$(security find-generic-password -a $USER -s backup-password -w) -DRIVE="afp://$USERNAME:$PASSWORD@$HOST/$SHARE" +DRIVE=$(cat ~/.backup-cred) -if ! mount | grep -q "$HOME/$LOCAL_MOUNT"; then +[[ "$DRIVE" == "" ]] && die "[$(date)] Could not find ~/.backup-cred" + +if ! mount | grep -q "$LOCAL_MOUNT"; then if [[ -e "$LOCAL_MOUNT" ]]; then - rm -rf "$LOCAL_MOUNT" || die "Could not mount to $LOCAL_MOUNT" + rmdir "$LOCAL_MOUNT" >/dev/null &2>1 || die "[$(date)] Could not mount to $LOCAL_MOUNT" fi mkdir -p "$LOCAL_MOUNT" - mount -t afp "$DRIVE" "$LOCAL_MOUNT" || die "Could not mount from $DRIVE" + mount -t afp "$DRIVE" "$LOCAL_MOUNT" || die "[$(date)] Could not mount backup drive" fi diff --git a/bin/backup-run.sh b/bin/backup-run.sh index aa83fae..d0c8022 100755 --- a/bin/backup-run.sh +++ b/bin/backup-run.sh @@ -7,27 +7,27 @@ function die { LOCAL_MOUNT="$HOME/.backup-drive" BACKUP_COMMANDS="$HOME/.backup-commands.sh" STARTED_DATE=$(date) +BIN=$(dirname $0) [[ -x "$BACKUP_COMMANDS" ]] || die "Could not find $BACKUP_COMMANDS" - -echo "Mounting backup volume..." -./backup-unmount.sh || die -./backup-mount.sh || die + +echo "[$(date)] Mounting backup volume..." +$BIN/backup-mount.sh || die [[ -d "$LOCAL_MOUNT" ]] || die "Could find $LOCAL_MOUNT" ( cd "$LOCAL_MOUNT" - echo "Started backing up at $STARTED_DATE" > backup.log + echo "[$(date)] Running backup..." > backup.log "$BACKUP_COMMANDS" >> backup.log 2>&1 ) if [[ "$?" != 0 ]]; then - echo "ERROR: Backup failed!" + echo "[$(date)] ERROR: Backup failed!" head -n10 "$LOCAL_MOUNT/backup.log" echo "..." tail -n10 "$LOCAL_MOUNT/backup.log" fi -#./backup-unmount.sh || echo "WARNING: Could not unmount $LOCAL_MOUNT! Please check into this!" -echo "Finished backing up at $(date)." +$BIN/backup-unmount.sh || echo "[$(date)] WARNING: Could not unmount $LOCAL_MOUNT! Please check into this!" +echo "[$(date)] Finished backing up" diff --git a/bin/backup-unmount.sh b/bin/backup-unmount.sh index 7b57441..c17f415 100755 --- a/bin/backup-unmount.sh +++ b/bin/backup-unmount.sh @@ -6,8 +6,8 @@ function die { LOCAL_MOUNT="$HOME/.backup-drive" if mount | grep -q "$LOCAL_MOUNT"; then - umount "$LOCAL_MOUNT" || die "Could not unmount $LOCAL_MOUNT" + umount "$LOCAL_MOUNT" || die "[$(date)] Could not unmount $LOCAL_MOUNT" fi -[[ -e "$LOCAL_MOUNT" ]] && rm -r "$LOCAL_MOUNT" +[[ -e "$LOCAL_MOUNT" ]] && rmdir "$LOCAL_MOUNT" exit 0