File: android-deltas-sync/_etc/bash-version/initial-copy-part1-pc.sh
################################################################# # Initial Copy, Part 1: run on PC, in Terminal or other, with: # # bash initial-copy-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 keeps the content zip on the PC as long as # possible for speed; it's still on PC for the to-proxy unzip. # This may be trivial for fast SSDs, but USB is still slower. # # 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. # The former shortens ziptools output, but its state is tricky. # # Coding note: step 2 could use Mergeall's cpall.py instead of # ziptools' zip-extract.py; both copy from PC to proxy drive. # In testing, however, a 210G content folder of 180k items # copied from PC to SSD in 14 minutes with cpall, but just # under 13 minutes with zip-extract when the zipfile is on PC. # Hence, unzipping is faster, most likely because it opens # just one input file, the zip; cpall must open 180k. # # Caveat: this script requires space for both content and its # uncompressed zip on the proxy - essentially twice the size # of content. If space is tight, manually move the zip to # the phone, before copying content to the proxy drive. # # Caveat: it may be useful to make runtime reports optional, # but a simple time=(time|'') and $time invokes a different time. # Bash starts to break down at this point (a Py coding may help). # # 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 # 'from' must 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 #---------------------------------------------------------------- # Optional: offer to run nonportable-filenames fixer tool #---------------------------------------------------------------- offerFixnamesRun # common.sh #---------------------------------------------------------------- # 1) Zip PC content with [zip-create.py -nocompress], store on PC #---------------------------------------------------------------- announce 'Zipping content on PC' time python3 $Z/zip-create.py $F/$STUFF.zip $F/$STUFF -zip@. \ -skipcruft -nocompress \ > $L/$stamp--init-1-pc-zip-log.txt #---------------------------------------------------------------- # 2) Unzip from PC to proxy with [zip-extract.py]: phone stand-in #---------------------------------------------------------------- announce 'Unzipping content on proxy' if [ -e $T/$STUFF ]; then echo 'Removing prior content on proxy' time rm -rf $T/$STUFF echo 'Starting unzip' fi # cpall.py is slower (see above) time python3 $Z/zip-extract.py $F/$STUFF.zip $T -permissions \ > $L/$stamp--init-2-proxy-unzip-log.txt #---------------------------------------------------------------- # 3) Move zip from PC to proxy with shell command: phone copy #---------------------------------------------------------------- announce 'Moving content zip to proxy' time mv $F/$STUFF.zip $T/$STUFF.zip # mv same as: rm -f; cp -p; rm # or: zip to proxy in step 1 and skip step 3, but PC likely net faster #---------------------------------------------------------------- # Optional: verify content copied from PC to phone #---------------------------------------------------------------- verifyPCtoProxy init-3 init-4 # common.sh, mergeall/diffall logfile names printf "\nSee logs in $L, and run part 2 on your phone.\n"