ADD safety-net ARCHIVE to the iPhone synchronization
Dieser Commit ist enthalten in:
+24
-3
@@ -7,6 +7,9 @@ library_list=("libimobiledevice")
|
|||||||
sync_folder="$HOME/iPhone"
|
sync_folder="$HOME/iPhone"
|
||||||
sync_mount="${sync_folder}/.mnt"
|
sync_mount="${sync_folder}/.mnt"
|
||||||
sync_data="${sync_folder}/data"
|
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
|
# Check if required programs are installed
|
||||||
for program in "${program_list[@]}"; do
|
for program in "${program_list[@]}"; do
|
||||||
@@ -64,8 +67,13 @@ TO="${sync_data}/"
|
|||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
echo "** Synchronization from ${FROM} to ${TO} **"
|
echo "** Synchronization from ${FROM} to ${TO} **"
|
||||||
read -n 1 -p "Action: (s)ync & delete / (n)ormal sync / (m)ount only & exit / (c)ancel? " response
|
echo "Options:"
|
||||||
# read -n 1 -p"Action: Sync iPhone and delete old files (y)es/(m)ount only/(n)o/(c)ancel? " response
|
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
|
echo
|
||||||
case ${response} in
|
case ${response} in
|
||||||
[Nn]* )
|
[Nn]* )
|
||||||
@@ -82,12 +90,25 @@ while true; do
|
|||||||
echo "iPhone remains mounted at ${sync_mount}. Remember to unmount manually later!"
|
echo "iPhone remains mounted at ${sync_mount}. Remember to unmount manually later!"
|
||||||
exit 0
|
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]* )
|
[Cc]* )
|
||||||
echo "Synchronization skipped by user."
|
echo "Synchronization skipped by user."
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
* )
|
* )
|
||||||
echo "Invalid selection. Please choose y, n, m, or c."
|
echo "Invalid selection. Please choose s, n, a, m, or c."
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|||||||
In neuem Issue referenzieren
Einen Benutzer sperren