Add backup commands

This commit is contained in:
Andrew Miner
2017-07-10 20:10:33 -07:00
parent 518f1067c3
commit dc81e990f1
6 changed files with 122 additions and 0 deletions
+7
View File
@@ -2,3 +2,10 @@ This repository contains the basic setup for how I like to configure my command
editor settings, and other odds and ends. In order to get a new machine up and running, simply clone this repository
onto the machine and run the included `install.sh` script. It will check for missing software and install it, and it
will install its own versions of various important configuration files (e.g., `.profile`, `.vimrc`, etc.).
### Backups
There are a number of commands in `bin` related to backing up your files to a remote drive. If you'd like to use them,
start by running `backup-init.sh`. It will ask you for various bits of information necessary to configure your backups.
When its finished, you'll want to call `backup-run.sh` whenever you'd like to make a backup. This command is written
with running from `cron` in mind, and may be safely run that way.
+15
View File
@@ -0,0 +1,15 @@
#!/bin/bash
# This script will automatically be invoked by the backup system from the target directory. Use whatever bash commands
# you like to backup any files needed into the current directory. The following will grab everything from your home
# directory which commonly includes data you may care about. If there are other things you want to save, be sure to
# add them in.
rsync -az --delete /Users/andrew/ ./Users/andrew \
--exclude .DS_Store \
--exclude .Trash \
--exclude .dropbox \
--exclude Dropbox \
--exclude Library \
--include Library/Application\ Support
+33
View File
@@ -0,0 +1,33 @@
#!/bin/bash
BACKUP_COMMANDS="$HOME/.backup-commands.sh"
BIN_DIR=$(dirname $0)
read -p "Enter your backup drive host: " HOST
read -p "Enter your backup drive share: " SHARE
read -p "Enter your backup drive username: " USERNAME
read -p "Enter your backup drive password: " -s PASSWORD
MASKED_PASSWORD=$(echo $PASSWORD | sed "s/./*/g")
echo; read -p "Backup to afp://$USERNAME:$MASKED_PASSWORD@$HOST/$SHARE? (Y/n): " CONFIRM
[[ "$CONFIRM" == "" ]] && CONFIRM="Y"
CONFIRM=$(echo $CONFIRM | tr "a-z" "A-Z")
if [[ "$CONFIRM" != "Y" ]]; then
echo "Aborting backup init."
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"
cp $BIN_DIR/backup-commands.default.sh "$BACKUP_COMMANDS"
chmod u+x "$BACKUP_COMMANDS"
echo; echo ">>>> PLEASE READ THIS! <<<<"
echo "The file '.backup-commands.sh' has been created in your home directory."
echo "Please review it to be sure it covers everything you want to back up."
read -p "(press enter to continue)"
+21
View File
@@ -0,0 +1,21 @@
#!/bin/bash
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"
if ! mount | grep -q "$HOME/$LOCAL_MOUNT"; then
if [[ -e "$LOCAL_MOUNT" ]]; then
rm -rf "$LOCAL_MOUNT" || die "Could not mount to $LOCAL_MOUNT"
fi
mkdir -p "$LOCAL_MOUNT"
mount -t afp "$DRIVE" "$LOCAL_MOUNT" || die "Could not mount from $DRIVE"
fi
+34
View File
@@ -0,0 +1,34 @@
#!/bin/bash
function die {
echo $*; exit 1
}
LOCAL_MOUNT="$HOME/.backup-drive"
BACKUP_COMMANDS="$HOME/.backup-commands.sh"
STARTED_DATE=$(date)
[[ -x "$BACKUP_COMMANDS" ]] || die "Could not find $BACKUP_COMMANDS"
echo "Starting backup at $STARTED_DATE..."
./backup-unmount.sh || die
./backup-mount.sh || die
[[ -d "$LOCAL_MOUNT" ]] || die "Could find $LOCAL_MOUNT"
(
cd "$LOCAL_MOUNT"
echo "Started backing up at $STARTED_DATE" > backup.log
"$BACKUP_COMMANDS" >> backup.log 2>&1
)
if [[ "$?" != 0 ]]; then
echo "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)."
+12
View File
@@ -0,0 +1,12 @@
#!/bin/bash
function die {
echo $*; exit 1
}
LOCAL_MOUNT="$HOME/.backup-drive"
if mount | grep -q "$LOCAL_MOUNT"; then
umount "$LOCAL_MOUNT" || die "Could not unmount $LOCAL_MOUNT"
fi
[[ -e "$LOCAL_MOUNT" ]] && rm -r "$LOCAL_MOUNT"