diff --git a/sync-iPhone.sh b/sync-iPhone.sh index 8ee25d5..105487e 100755 --- a/sync-iPhone.sh +++ b/sync-iPhone.sh @@ -7,6 +7,9 @@ library_list=("libimobiledevice") sync_folder="$HOME/iPhone" sync_mount="${sync_folder}/.mnt" sync_data="${sync_folder}/data" +sync_archive="${sync_folder}/archive" +current_date=$(date +%F) +safety_dir="changes_${current_date}" # Check if required programs are installed for program in "${program_list[@]}"; do @@ -64,8 +67,13 @@ TO="${sync_data}/" while true; do echo "** Synchronization from ${FROM} to ${TO} **" - read -n 1 -p "Action: (s)ync & delete / (n)ormal sync / (m)ount only & exit / (c)ancel? " response -# read -n 1 -p"Action: Sync iPhone and delete old files (y)es/(m)ount only/(n)o/(c)ancel? " response + echo "Options:" + echo " (s) sync & delete from 'data' (matches iPhone state)" + echo " (n) normal sync to 'data' (keeps files deleted on iPhone)" + echo " (a) safety-net ARCHIVE (syncs 'data' to 'archive', backups changed files, NEVER deletes)" + echo " (m) mount only & exit" + echo " (c) cancel" + read -n 1 -p "Action: " response echo case ${response} in [Nn]* ) @@ -82,12 +90,25 @@ while true; do echo "iPhone remains mounted at ${sync_mount}. Remember to unmount manually later!" exit 0 ;; + [Aa]* ) + # Ensure the archive folder exists + mkdir -p "${sync_archive}" + if [ ! -d "${sync_data}" ] || [ -z "$(ls -A "${sync_data}")" ]; then + echo "Error: The 'data' folder is empty or does not exist. Run a sync (n or s) first!" + else + echo "Starting safety-net archive backup from ${sync_data} to ${sync_archive}..." + # Safety-net sync: moves modified/overwritten files into a dated subfolder + rsync -avP --backup --backup-dir="${safety_dir}" "${sync_data}/" "${sync_archive}/" + echo "Archive completed. Safe directory for modified files today: ${sync_archive}/${safety_dir}" + fi + break + ;; [Cc]* ) echo "Synchronization skipped by user." break ;; * ) - echo "Invalid selection. Please choose y, n, m, or c." + echo "Invalid selection. Please choose s, n, a, m, or c." ;; esac done