2013-06-18 17:13:55 +02:00
|
|
|
#!/bin/sh
|
2013-03-03 11:19:50 +01:00
|
|
|
|
2013-07-09 00:28:04 +02:00
|
|
|
## TODO: support for passing files as argument.
|
|
|
|
|
2013-03-03 11:19:50 +01:00
|
|
|
_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=""
|
2013-07-09 00:23:57 +02:00
|
|
|
OPTIONS="--owner=root --group=root --numeric-owner"
|
2013-03-03 11:19:50 +01:00
|
|
|
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
|
|
|
|
|
2013-06-18 17:13:55 +02:00
|
|
|
ARCEXT="tar.gz"
|
|
|
|
ARCOPT="z"
|
2013-03-03 11:19:50 +01:00
|
|
|
case $OPTION_METHOD in
|
|
|
|
"gz")
|
|
|
|
ARCEXT="tar.gz"
|
|
|
|
ARCOPT="z"
|
|
|
|
;;
|
|
|
|
"xz")
|
|
|
|
ARCEXT="tar.xz"
|
|
|
|
ARCOPT="J"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
shift $(($OPTIND - 1))
|
|
|
|
|
2013-06-18 17:13:55 +02:00
|
|
|
case $# in
|
|
|
|
1)
|
|
|
|
FULLPATH="$(realpath "$1")"
|
|
|
|
OUTPUT="${FULLPATH}-$(date +%F-%H%M%S).${ARCEXT}"
|
2013-03-03 11:19:50 +01:00
|
|
|
|
2013-06-18 17:13:55 +02:00
|
|
|
(cd "${FULLPATH}/.." && \
|
2013-07-09 00:23:57 +02:00
|
|
|
tar ${OPTION_VCS} ${OPTIONS} -${ARCOPT} -cf "$OUTPUT" "${FULLPATH##*/}" )
|
2013-06-18 17:13:55 +02:00
|
|
|
;;
|
2013-03-03 11:19:50 +01:00
|
|
|
|
2013-06-18 17:13:55 +02:00
|
|
|
0)
|
|
|
|
FULLPATH="$PWD"
|
|
|
|
OUTPUT="${FULLPATH}-$(date +%F-%H%M%S).${ARCEXT}"
|
|
|
|
(cd "${FULLPATH}/.." && \
|
2013-07-09 00:23:57 +02:00
|
|
|
tar ${OPTION_VCS} ${OPTIONS} -${ARCOPT} -cf "$OUTPUT" "${FULLPATH##*/}" )
|
2013-06-18 17:13:55 +02:00
|
|
|
;;
|
2013-03-03 11:19:50 +01:00
|
|
|
|
2013-06-18 17:13:55 +02:00
|
|
|
*)
|
|
|
|
FULLPATH="$PWD"
|
|
|
|
OUTPUT="${FULLPATH}/${FULLPATH##*/}-$(date +%F-%H%M%S).${ARCEXT}"
|
2013-03-03 11:19:50 +01:00
|
|
|
|
2013-07-09 00:23:57 +02:00
|
|
|
tar ${OPTION_VCS} ${OPTIONS} -${ARCOPT} -cf "$OUTPUT" "$@"
|
2013-06-18 17:13:55 +02:00
|
|
|
;;
|
|
|
|
esac
|