Adding all files and folders

This commit is contained in:
2026-02-01 12:08:31 +11:00
parent 892f3f2418
commit 1fb54400b4
24 changed files with 63803 additions and 0 deletions

View File

@@ -0,0 +1,91 @@
#!/bin/bash
# ---
# Configuration ---
# ---
LOG_FILE="logs/02_file_migration.log"
DRY_RUN=""
SOURCE_HOME="/home/sam" # This should be the path where your old home is mounted
TARGET_STAGING="/mnt/ubuntu_storage_3TB/migration_staging" # As per the guide
# Check for --dry-run flag
if [ "$1" == "--dry-run" ]; then
DRY_RUN="--dry-run"
echo "---
PERFORMING DRY RUN ---" | tee -a "$LOG_FILE"
fi
# Safety check for root user
if [ "$(id -u)" -eq 0 ] && [ "$2" != "--allow-root" ]; then
echo "Running as root is not recommended. Use --allow-root to override."
exit 1
fi
# ---
# Helper Functions ---
# ---
log() {
echo "$1" | tee -a "$LOG_FILE"
}
run_rsync() {
log "------------------------------------------------------------------------"
log "Syncing $1..."
# The --info=progress2 flag gives a cleaner total progress indicator.
# The --exclude='/data' is critical to not re-copy existing data.
rsync -avh --info=progress2 $DRY_RUN --exclude='/data' "$2" "$3"
log "Finished syncing $1."
log "------------------------------------------------------------------------"
}
# ---
# Main Execution ---
# ---
# Initialize log file
echo "File Migration Log - $(date)" > "$LOG_FILE"
echo "----------------------------------------------------" >> "$LOG_FILE"
if [ -n "$DRY_RUN" ]; then
log "Dry run mode enabled. No files will be changed."
fi
log "Source directory: $SOURCE_HOME"
log "Target staging directory: $TARGET_STAGING"
# Check if source directory exists
if [ ! -d "$SOURCE_HOME" ]; then
log "ERROR: Source directory $SOURCE_HOME does not exist. Mount your old home directory and try again."
exit 1
fi
# Create target directory
log "Creating target staging directory (if it doesn\'t exist)..."
if [ -z "$DRY_RUN" ]; then
mkdir -p "$TARGET_STAGING"
fi
# ---
# Migration Commands ---
# ---
# These commands will copy your main user folders from your old Ubuntu home
# into the staging area. The structure is kept simple for later organization.
# Note the trailing slash on the source to copy the *contents* of the directory.
run_rsync "Documents" "${SOURCE_HOME}/Documents/" "${TARGET_STAGING}/Documents/"
run_rsync "Pictures" "${SOURCE_HOME}/Pictures/" "${TARGET_STAGING}/Pictures/"
run_rsync "Music" "${SOURCE_HOME}/Music/" "${TARGET_STAGING}/Music/"
run_rsync "Videos" "${SOURCE_HOME}/Videos/" "${TARGET_STAGING}/Videos/"
run_rsync "Desktop" "${SOURCE_HOME}/Desktop/" "${TARGET_STAGING}/Desktop/"
run_rsync "Downloads" "${SOURCE_HOME}/Downloads/" "${TARGET_STAGING}/Downloads/"
run_rsync "Dotfiles" "${SOURCE_HOME}/dotfiles/" "${TARGET_STAGING}/dotfiles/"
# Add any other specific project directories you know of here. For example:
# run_rsync "Arduino Projects" "${SOURCE_HOME}/Arduino/" "${TARGET_STAGING}/Arduino/"
log "\n"
log "---
File migration script finished. ---"
log "Review the output above. If everything looks correct, you can run the script"
log "again without the --dry-run flag to perform the actual file copy."
log "The log has been saved to $LOG_FILE"