Script for creating compressed archives with zstd and xz

This commit is contained in:
RealStickman 2021-07-31 14:49:09 +02:00
parent a9ff703f37
commit 8a348a482a

View File

@ -0,0 +1,72 @@
#!/usr/bin/env bash
set -euo pipefail
if [ $# -eq 2 ]; then
alg=$1
target=$2
elif [ $# -eq 3 ]; then
alg=$1
str=$2
target=$3
elif [ $1 == "-h" || $1 == "--help" ]; then
echo "sc-compress ALGORITHM [STRENGTH] TARGET"
echo "Algorithms: xz, zstd"
echo "Strength: low, medium, high"
else
exit 1
fi
command="tar -cv -I\""
# add algorithm
if [ $alg == "xz" ]; then
command+="pxz"
elif [ $alg == "zstd" ]; then
command+="zstd -T0"
else
echo "Unsupported option"
exit 1
fi
# check if something with the strength is set
if [ ! -z "${str+x}" ]; then
if [ $str == "low" ]; then
if [ $alg == "xz" ]; then
command+=" -1"
elif [ $alg == "zstd" ]; then
command+=" -1"
fi
elif [ $str == "medium" ]; then
if [ $alg == "xz" ]; then
command+=" -5"
elif [ $alg == "zstd" ]; then
command+=" -10"
fi
elif [ $str == "high" ]; then
if [ $alg == "xz" ]; then
command+=" -9"
elif [ $alg == "zstd" ]; then
command+=" -19"
fi
else
echo "Unsupported option"
exit 1
fi
fi
command+="\""
# add archive file
if [ $alg == "xz" ]; then
command+=" -f ${target}.tar.xz $target"
elif [ $alg == "zstd" ]; then
command+=" -f ${target}.tar.zst $target"
fi
# output final command
echo $command
# execute command
eval $command
exit 0