driveback-tool/driveback-import.sh
Tim Rutter 3bf6ab9054 Updated logging
Added loging headers for volume name and timestamp
2025-01-22 14:04:57 +10:30

104 lines
2.8 KiB
Bash
Executable File

#!/bin/sh
HOST='ioj-ds1821.local'
MAC="umac-128-etm@openssh.com"
CIPHER="aes128-ctr"
SRC=$(echo "$1" | sed 's#/$##')
TIMESTAMP="$(date '+%Y%m%d%H%M%S')"
VOLUME_PATH=$(echo "$1" | sed 's#^\(/Volumes/[^\/]*\).*$#\1#')
VOLUME_NAME=$(echo "$1" | sed 's#^/Volumes/\([^\/]*\).*$#\1#')
VOLUME_UUID=$(diskutil info "${VOLUME_PATH}" 2> /dev/null | grep 'Volume UUID:' | sed 's# *Volume UUID: *##')
VOLUME_DISK=$(df "${VOLUME_PATH}" | tail -n1 | awk '{print $1}' | sed 's/\(disk[0-9][0-9]*\)s[0-9][0-9]*/\1/g')
#echo "Disk = $VOLUME_DISK"
#exit 1
SEP=''
mkdir logs
if [ -f "$1" ]; then
VOLUME_DIR=$(echo "$1" | sed 's#^/Volumes/[^\/]*/\(.*\)/[^\/]*$#\1#')
elif [ -d "$1" ]; then
VOLUME_DIR=$(echo "$1" | sed -E "s#^${VOLUME_PATH}/?##" | sed 's#/##' )
if [ "$VOLUME_DIR" == "" ]; then
SEP=''
fi
elif [ ! -e "$1" ]; then
exit -1
fi
#DST="${VOLUME_NAME} ${VOLUME_UUID}/${VOLUME_DIR}${SEP}"
DST="by-uuid/${VOLUME_UUID}/${VOLUME_DIR}${SEP}"
LOG="logs/${VOLUME_UUID} ${TIMESTAMP} ${VOLUME_NAME}.log"
TARGET="timrutter@${HOST}:'/volume1/Storage/HDDs/${DST}'"
echo "SRC='$SRC'"
#echo "DST='$DST'"
echo "TARGET='$TARGET'"
#echo "DIR='$VOLUME_DIR'"
read -p "Are you sure? " -n 1 -r
echo # (optional) move to a new line
if [[ ! $REPLY =~ ^[Yy]$ ]]
then
echo 'Bye!'
exit -2
fi
read -p "Run dot_clean on '$SRC'? " -n 1 -r
echo # (optional) move to a new line
if [[ ! $REPLY =~ ^[Nn]$ ]]
then
echo "Cleaning..."
find "$SRC" -maxdepth 1 -mindepth 1 -not -name '*.backupdb' -exec dot_clean -n {} + &>/dev/null
fi
RSYNC_OPTIONS=""
#RSYNC_OPTIONS="--delete --delete-excluded"
read -p "Dry run? " -n 1 -r
echo # (optional) move to a new line
if [[ ! $REPLY =~ ^[Nn]$ ]]
then
RSYNC_OPTIONS="$RSYNC_OPTIONS --dry-run"
fi
read -p "Full sync aka DELETE? " -n 1 -r
echo # (optional) move to a new line
if [[ $REPLY =~ ^[Yy]$ ]]
then
RSYNC_OPTIONS="$RSYNC_OPTIONS --delete --delete-excluded"
fi
echo "rsync options='$RSYNC_OPTIONS'"
read -p "Pause, press any key... " -n 1 -r
echo "Running..."
echo "#volume_name=${VOLUME_NAME}
#timestamp=${TIMESTAMP}" >> "${LOG}"
/usr/bin/rsync -tirl \
--progress --stats $RSYNC_OPTIONS \
--exclude={'*.backupdb/*','.Trashes','.Spotlight-V100','.AppleDouble','.DS_Store','Desktop DF','Desktop DB','.apdisk'.'.Trashes','.fseventsd','.TemporaryItems','.Spotlight-V100','.DocumentRevisions-V100','.com.apple.timemachine*','tmbootpicker.efi','exclude-from-transfer'} \
-e "ssh -c ${CIPHER} -o 'MACs ${MAC}'" \
--rsync-path="/usr/local/bin/rsync" \
"$SRC/" "$TARGET" \
2>&1 | tee -a "${LOG}"
echo "Done Transfering ''"
ssh "timrutter@${HOST}" "ln -snf ../by-uuid/${VOLUME_UUID} '/volume1/Storage/HDDs/by-name/${VOLUME_NAME}'"
read -p "Do you want to eject the volume '$VOLUME_NAME'? " -n 1 -r
echo # (optional) move to a new line
if [[ $REPLY =~ ^[Yy]$ ]]
then
diskutil eject "$VOLUME_PATH"
exit 0
fi