feat: Update compression for tar
This commit is contained in:
parent
a5e2a00feb
commit
d4c7e6c4a1
@ -118,38 +118,40 @@ remove_if_empty() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
set_compression() {
|
set_compression() {
|
||||||
# Set `compr_cmd` and `compr_ext` by name.
|
# Set `cmpr_cmd`, `cmpr_ext` and `tar_ext` by `$1` value.
|
||||||
|
|
||||||
# Select compression utility and set filename extension.
|
# Select compression utility and set filename extension.
|
||||||
# Refference: https://www.gnu.org/software/tar/manual/html_node/gzip.html
|
# Refference: https://www.gnu.org/software/tar/manual/html_node/gzip.html
|
||||||
case "$1" in
|
case "$1" in
|
||||||
gzip|gz) compr_ext='.gz'; compr_cmd='gzip';;
|
gzip|gz) cmpr_ext='.gz'; tar_ext='.tar.gz'; cmpr_cmd='gzip';;
|
||||||
tgz) compr_ext='.gz'; compr_cmd='gzip';;
|
tgz) cmpr_ext='.gz'; tar_ext='.tgz'; cmpr_cmd='gzip';;
|
||||||
taz) compr_ext='.gz'; compr_cmd='gzip';;
|
taz) cmpr_ext='.gz'; tar_ext='.taz'; cmpr_cmd='gzip';;
|
||||||
compress|Z) compr_ext='.Z'; compr_cmd='compress';;
|
compress|Z) cmpr_ext='.Z'; tar_ext='.tar.Z'; cmpr_cmd='compress';;
|
||||||
taZ) compr_ext='.Z'; compr_cmd='compress';;
|
taZ) cmpr_ext='.Z'; tar_ext='.taZ'; cmpr_cmd='compress';;
|
||||||
bzip2|bz2) compr_ext='.bz2'; compr_cmd='bzip2';;
|
bzip2|bz2) cmpr_ext='.bz2'; tar_ext='.tar.bz2'; cmpr_cmd='bzip2';;
|
||||||
tz2) compr_ext='.bz2'; compr_cmd='bzip2';;
|
tz2) cmpr_ext='.bz2'; tar_ext='.tz2'; cmpr_cmd='bzip2';;
|
||||||
tbz2) compr_ext='.bz2'; compr_cmd='bzip2';;
|
tbz2) cmpr_ext='.bz2'; tar_ext='.tbz2'; cmpr_cmd='bzip2';;
|
||||||
tbz) compr_ext='.bz2'; compr_cmd='bzip2';;
|
tbz) cmpr_ext='.bz2'; tar_ext='.tbz'; cmpr_cmd='bzip2';;
|
||||||
lzip|lz) compr_ext='.lz'; compr_cmd='lzip';;
|
lzip|lz) cmpr_ext='.lz'; tar_ext='.tar.lz'; cmpr_cmd='lzip';;
|
||||||
lzma) compr_ext='.lzma'; compr_cmd='lzma';;
|
lzma) cmpr_ext='.lzma'; tar_ext='.tar.lzma'; cmpr_cmd='lzma';;
|
||||||
tlz) compr_ext='.lzma'; compr_cmd='lzma';;
|
tlz) cmpr_ext='.lzma'; tar_ext='.tlz'; cmpr_cmd='lzma';;
|
||||||
lzop|lzo) compr_ext='.lzop'; compr_cmd='lzop';;
|
lzop|lzo) cmpr_ext='.lzop'; tar_ext='.tar.lzo'; cmpr_cmd='lzop';;
|
||||||
xz) compr_ext='.xz'; compr_cmd='xz';;
|
xz) cmpr_ext='.xz'; tar_ext='.tar.xz'; cmpr_cmd='xz';;
|
||||||
zstd|zst) compr_ext='.zst'; compr_cmd='zstd --rm';;
|
zstd|zst) cmpr_ext='.zst'; tar_ext='.tar.zst'; cmpr_cmd='zstd --rm';;
|
||||||
tzst) compr_ext='.zst'; compr_cmd='zstd --rm';;
|
tzst) cmpr_ext='.zst'; tar_ext='.tzst'; cmpr_cmd='zstd --rm';;
|
||||||
*) # No compression
|
*) # No compression
|
||||||
# shellcheck disable=SC2034
|
# shellcheck disable=SC2034
|
||||||
compr_ext=
|
cmpr_ext=
|
||||||
# shellcheck disable=SC2034
|
# shellcheck disable=SC2034
|
||||||
compr_cmd=
|
tar_ext='.tar'
|
||||||
|
# shellcheck disable=SC2034
|
||||||
|
cmpr_cmd=
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
[ -z "$compr_cmd" ] && return # Exit from function if no compression set
|
[ -z "$cmpr_cmd" ] && return # Exit from function if no compression set
|
||||||
|
|
||||||
is_installed "${compr_cmd%% *}"
|
is_installed "${cmpr_cmd%% *}"
|
||||||
}
|
}
|
||||||
|
|
||||||
compress_file() {
|
compress_file() {
|
||||||
@ -163,15 +165,15 @@ compress_file() {
|
|||||||
if [ -n "$compression" ]; then
|
if [ -n "$compression" ]; then
|
||||||
set_compression "$compression"
|
set_compression "$compression"
|
||||||
else
|
else
|
||||||
compr_cmd=
|
cmpr_cmd=
|
||||||
compr_ext=
|
cmpr_ext=
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Compress file
|
# Compress file
|
||||||
if [ -n "$compr_cmd" ]; then
|
if [ -n "$cmpr_cmd" ]; then
|
||||||
log -V "Compressing file $1 by ${compr_cmd%% *} ..."
|
log -V "Compressing file $1 by ${cmpr_cmd%% *} ..."
|
||||||
$compr_cmd "$1" 2>> "$__log_file"
|
$cmpr_cmd "$1" 2>> "$__log_file"
|
||||||
compressed="${1}${compr_ext}"
|
compressed="${1}${cmpr_ext}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f "$compressed" ]; then
|
if [ -f "$compressed" ]; then
|
||||||
|
@ -28,7 +28,6 @@ src_tar() {
|
|||||||
local dst_path
|
local dst_path
|
||||||
local archive
|
local archive
|
||||||
local exclude
|
local exclude
|
||||||
local file_ext
|
|
||||||
|
|
||||||
uri="$1"
|
uri="$1"
|
||||||
# shellcheck disable=SC2154
|
# shellcheck disable=SC2154
|
||||||
@ -71,34 +70,13 @@ src_tar() {
|
|||||||
tar_options="${tar_options:--acf}"
|
tar_options="${tar_options:--acf}"
|
||||||
|
|
||||||
# Select filename extension by compression type.
|
# Select filename extension by compression type.
|
||||||
if [ "$compression" ]; then
|
if [ -n "$compression" ]; then
|
||||||
# Make sure for the `--auto-compress` is enabled in __tar_options
|
set_compression "$compression"
|
||||||
# Refference:
|
|
||||||
# https://www.gnu.org/software/tar/manual/html_node/gzip.html
|
|
||||||
case "$compression" in
|
|
||||||
gzip|gz) file_ext='.tar.gz';; # gzip
|
|
||||||
tgz) file_ext='.tgz';; # gzip
|
|
||||||
taz) file_ext='.taz';; # gzip
|
|
||||||
compress|Z) file_ext='.tar.Z';; # compress
|
|
||||||
taZ) file_ext='.taZ';; # compress
|
|
||||||
bzip2|bz2) file_ext='.tar.bz2';; # bzip2
|
|
||||||
tz2) file_ext='.tz2';; # bzip2
|
|
||||||
tbz2) file_ext='.tbz2';; # bzip2
|
|
||||||
tbz) file_ext='.tbz';; # bzip2
|
|
||||||
lzip|lz) file_ext='.tar.lz';; # lzip
|
|
||||||
lzma) file_ext='.tar.lzma';; # lzma
|
|
||||||
tlz) file_ext='.tlz';; # lzma
|
|
||||||
lzop|lzo) file_ext='.tar.lzo';; # lzop
|
|
||||||
xz) file_ext='.tar.xz';; # xz
|
|
||||||
zstd|zst) file_ext='.tar.zst';; # zstd
|
|
||||||
tzst) file_ext='.tzst';; # zstd
|
|
||||||
*) file_ext='.tar';; # No compression
|
|
||||||
esac
|
|
||||||
else
|
else
|
||||||
file_ext='.tar'
|
tar_ext='.tar'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
archive="${dst_path}/$(gen_backup_name "$file_ext")"
|
archive="${dst_path}/$(gen_backup_name "$tar_ext")"
|
||||||
|
|
||||||
log "Archiving $src_path to $archive ..."
|
log "Archiving $src_path to $archive ..."
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user