58 lines
1.4 KiB
Django/Jinja
58 lines
1.4 KiB
Django/Jinja
#!/bin/bash
|
|
|
|
original_dir=$(pwd)
|
|
|
|
source ./backup-vars.sh
|
|
cd "$original_dir"
|
|
|
|
./backup-mount.sh &
|
|
RESTIC_PID=$!
|
|
|
|
MOUNT_DIR="/mnt/restic"
|
|
|
|
# Wait until the directory exists
|
|
while [ ! -d "$MOUNT_DIR" ]; do
|
|
echo "Waiting for directory to be created..."
|
|
sleep 1
|
|
done
|
|
|
|
# Wait until the directory is not empty
|
|
while [ ! "$(ls -A "$MOUNT_DIR")" ]; do
|
|
echo "Waiting for directory to have content..."
|
|
sleep 1
|
|
done
|
|
|
|
# Space-separated list of absolute paths
|
|
BACKUP_DIR="$MOUNT_DIR/snapshots/latest"
|
|
|
|
eval "$DIRS_TO_BACKUP_STR" # creates the DIRS_TO_BACKUP array from string
|
|
|
|
# Iterate over each path in the array
|
|
for ORIGINAL_PATH in "${DIRS_TO_BACKUP[@]}"; do
|
|
# Skip empty paths
|
|
[[ -z "$ORIGINAL_PATH" ]] && continue
|
|
|
|
# Construct the corresponding backup path
|
|
BACKUP_PATH="$BACKUP_DIR$ORIGINAL_PATH"
|
|
|
|
# Check if the backup directory exists
|
|
if [[ ! -d "$BACKUP_PATH" ]]; then
|
|
echo "Backup directory not found: $BACKUP_PATH"
|
|
continue
|
|
fi
|
|
|
|
# Ensure the original directory exists, create it if not
|
|
if [[ ! -d "$ORIGINAL_PATH" ]]; then
|
|
echo "Creating original directory: $ORIGINAL_PATH"
|
|
mkdir -p "$ORIGINAL_PATH"
|
|
fi
|
|
|
|
# Use rsync to copy files, preserving permissions, ownership, and timestamps
|
|
rsync --archive --acls --xattrs --compress --verbose --human-readable --partial --progress "$BACKUP_PATH/" "$ORIGINAL_PATH/"
|
|
done
|
|
|
|
kill -SIGINT $RESTIC_PID
|
|
umount /mnt/restic
|
|
|
|
echo "DONE"
|