File: android-deltas-sync/_etc/bash-version/sync-changes-part1-pc.sh
################################################################# # Sync Changes, Part 1: run on PC, in Terminal or other, with: # # bash sync-changes-part1-pc.sh # # Run this from any folder; it uses paths set in config-pc.txt, # and finds sourced files in its own folder automatically. # # Step runtimes are shown in the console after step completion. # Step outputs go to files in $L; watch with 'tail -f $L/file'. # # Coding note: this creates deltas on the PC temporarily for # both speed and data-loss prevention. Creating on the proxy # seems nearly as good: using the PC adds a step to copy the # deltas zip to the proxy; the deltas items must be copied to # the proxy drive eventually in its content copy; and external # SSDs are fast. Still, USB data transfers are generally much # slower than PC buses, and metadata is more likely to make it # to the phone in a zip made on PC. Don't use a $(mktemp -d) # temp folder for this: hard to find if^H^H when things fail. # # Coding note: to shorten paths in zipfiles and hence on unzips, # this can either cd to the content's folder, or use ziptools' # '-zip@.' arg to strip the path leading to the zipped item. # # See _README.html for license, attribution, and more docs. ################################################################# mydir=$(dirname "$0") # this script's own folder source $mydir/config-pc.txt # get settings for scripts run on PC source $mydir/common.sh # run code common to both PC and phone rm -rf $F/DELTAS # deltas temp on PC (deltas.py rms too) # 'from' and 'to' must both exist here if [ ! -e $F/$STUFF ]; then echo "The \$F/\$STUFF folder does not exist: $F/$STUFF" echo 'Exiting; please check the config file and rerun.' exit fi if [ ! -e $T/$STUFF ]; then echo "The \$T/\$STUFF folder does not exist: $T/$STUFF" echo 'Exiting; please check the config file and rerun.' exit fi #---------------------------------------------------------------- # Optional: offer to run nonportable-filenames fixer tool #---------------------------------------------------------------- offerFixnamesRun # common.sh #---------------------------------------------------------------- # Optional: show PC~proxy deltas before saving or propagating #---------------------------------------------------------------- previewChanges # common.sh #---------------------------------------------------------------- # 1) Make PC~proxy deltas with [deltas.py], storing in PC folder #---------------------------------------------------------------- announce 'Making PC~proxy deltas' time python3 $M/deltas.py $F/DELTAS $F/$STUFF $T/$STUFF -skipcruft \ > $L/$stamp--sync-1-pc-proxy-deltas-log.txt #---------------------------------------------------------------- # 2) Apply deltas on PC to proxy with [mergeall.py -restore] #---------------------------------------------------------------- announce 'Applying deltas to proxy' time python3 $M/mergeall.py $F/DELTAS $T/$STUFF -restore -auto -skipcruft -backup -quiet \ > $L/$stamp--sync-2-apply-deltas-proxy-log.txt #---------------------------------------------------------------- # 3) Zip deltas on PC with [zip-create.py -nocompress] #---------------------------------------------------------------- announce 'Zipping deltas to proxy' time python3 $Z/zip-create.py $F/DELTAS.zip $F/DELTAS -zip@. \ -skipcruft -nocompress \ > $L/$stamp--sync-3-zip-deltas-pc-log.txt #---------------------------------------------------------------- # 4) Move deltas zip from PC to proxy #---------------------------------------------------------------- printf '\nMoving deltas zip to proxy\n' # zipping to proxy likely slower time mv $F/DELTAS.zip $T/DELTAS.zip # mv same as: rm -f; cp -pR; rm -rf printf '\nRemoving deltas folder from PC (keeping zip on proxy)\n' time rm -rf $F/DELTAS #---------------------------------------------------------------- # Optional: verify content copied from PC to phone #---------------------------------------------------------------- verifyPCtoProxy sync-4 sync-5 # common.sh, mergeall/diffall logfile names printf "\nSee logs in $L, and run part 2 on your phone.\n"