File: android-deltas-sync/_etc/bash-version/initial-copy-part1-pc.sh (original) (raw)
#################################################################
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;watchwith′tail−fL; watch with 'tail -f L;watchwith′tail−fL/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/F/F/STUFF ]; then echo "The $F/$STUFF folder does not exist: F/F/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.pyZ/zip-create.py Z/zip−create.pyF/$STUFF.zip F/F/F/STUFF -zip@.
-skipcruft -nocompress
> L/L/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/T/T/STUFF ]; then echo 'Removing prior content on proxy' time rm -rf T/T/T/STUFF echo 'Starting unzip' fi
cpall.py is slower (see above)
time python3 Z/zip−extract.pyZ/zip-extract.py Z/zip−extract.pyF/$STUFF.zip $T -permissions
> L/L/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/F/F/STUFF.zip T/T/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"