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"



[Home page] Books Code Blog Python Author Train Find ©M.Lutz