ambevar-dotfiles/.scripts/archive

82 lines
1.6 KiB
Bash
Executable File

#!/bin/sh
_printhelp()
{
cat <<EOF
Usage: ${1##*/} [-m METHOD] [-v] FILES|FOLDERS
Create an archive from a single or multiples files/folders.
-h: Display this help.
-m: Choose compression method.
* gz: gzip (default).
* xz: LZMA.
-v: Exclude VCS data. (GNU tar only.)
EOF
}
OPTION_VCS=""
OPTION_METHOD=""
while getopts ":hm:v" opt; do
case $opt in
h)
_printhelp "$0"
exit 1
;;
m)
OPTION_METHOD="${OPTARG}"
;;
v)
OPTION_VCS="--exclude-vcs"
;;
?)
_printhelp "$0"
exit 1
;;
:)
echo "Missing argument."
_printhelp "$0"
exit 1
;;
esac
done
ARCEXT="tar.gz"
ARCOPT="z"
case $OPTION_METHOD in
"gz")
ARCEXT="tar.gz"
ARCOPT="z"
;;
"xz")
ARCEXT="tar.xz"
ARCOPT="J"
;;
esac
shift $(($OPTIND - 1))
case $# in
1)
FULLPATH="$(realpath "$1")"
OUTPUT="${FULLPATH}-$(date +%F-%H%M%S).${ARCEXT}"
(cd "${FULLPATH}/.." && \
tar -${ARCOPT} -cf ${OPTION_VCS} "$OUTPUT" "${FULLPATH##*/}" )
;;
0)
FULLPATH="$PWD"
OUTPUT="${FULLPATH}-$(date +%F-%H%M%S).${ARCEXT}"
(cd "${FULLPATH}/.." && \
tar -${ARCOPT} -cf ${OPTION_VCS} "$OUTPUT" "${FULLPATH##*/}" )
;;
*)
FULLPATH="$PWD"
OUTPUT="${FULLPATH}/${FULLPATH##*/}-$(date +%F-%H%M%S).${ARCEXT}"
tar -${ARCOPT} -cf ${OPTION_VCS} "$OUTPUT" "$@"
;;
esac