#!/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"