ImageGrid/scripts/compress-archive.sh
2018-05-12 13:47:59 +03:00

91 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
# TODO make this runnable from anywhere...
# - prepend paths with './' only if local/relative
BASE_PATH=.
ARCH="bzip2 -v {}"
EXT=ARW
# HACK: this is here to avoid using windows find...
PATH=/bin:$PATH
printhelp(){
echo "Usage: `basename $0` [ARGUMENTS] [PATH]"
echo
echo "Arguments:"
echo " -h --help - print this help and exit."
echo
echo " -bz -bzip2 - use bzip2 to compress (default)."
echo " -gz -gzip - use gzip to compress."
echo " -c -compact - use ntfs compression."
echo
echo " -ext EXT - set file extension to compress (default: ARW)"
echo " NOTE: only one -ext is supported now".
echo
echo "NOTE: not yet sure if to use ntfs compression or bzip2 as default"
echo " they both have advantages and disadvantages:"
echo " ntfs compression:"
echo " + transparent to all apps -- no extra steps needed"
echo " - might complicate low level data recovery"
echo " - transfers may not be transparent -- actual size vs. disk size"
echo " bzip2/gzip/...:"
echo " + transparent to file operations and recovery"
echo " - requires manual decompression"
echo
}
# process args...
while true ; do
case $1 in
-h|--help)
printhelp
exit
;;
# archivers...
-bz|--bzip2)
ARCH=bzip2 -v \{}
shift
;;
-gz|--gzip)
ARCH=gzip -v \{}
shift
;;
-c|--compact)
# XXX should we cygpath -w all the inputs???
ARCH='compact /c /exe:lzx {}'
shift
;;
# extension to compress...
--ext)
EXT=$2
shift
shift
;;
*)
break
;;
esac
done
# get path...
if [ $1 ] ; then
BASE_PATH="$1"
fi
# do the work...
find $BASE_PATH -name \*.${EXT} -exec ${ARCH} \;
# vim:set nowrap nospell :