bash : archive : change archive ext to tgz and txz.

This commit is contained in:
Dmitry Voronin 2023-11-02 21:49:26 +03:00
parent 8ff59d23c6
commit b952ea0583

View file

@ -1,4 +1,4 @@
_ARCHIVE_PATTERN="_[0-9]{12}-[[:alnum:]]{40}.tar.[xg]z"
_ARCHIVE_PATTERN="_[0-9]{12}-[[:alnum:]]{40}.t[xg]z"
alias _ARCHIVE_DATE="date +%Y%m%d%H%M"
# archive file with maximum compression and checksum.
@ -26,10 +26,10 @@ archive()
echo "${status}"
# create archive.
tar -c "${target}" | pv -s $(du -sb "${target}" | awk '{print $1}') | xz -9e > "${target%/*}".tar.xz
tar -c "${target}" | pv -s $(du -sb "${target}" | awk '{print $1}') | xz -9e > "${target%/*}".txz
# append hash to target name.
mv "${target%/*}".tar.xz "${target%/*}"_${date}-$(sha1sum "${target%/*}".tar.xz | cut -d\ -f1).tar.xz
mv "${target%/*}".txz "${target%/*}"_${date}-$(sha1sum "${target%/*}".txz | cut -d\ -f1).txz
# report success.
echo -e "${color_green}${status}: done.${color_default}"
@ -61,10 +61,10 @@ archive_fast()
echo "${status}"
# create archive.
tar -c "${target}" | pv -s $(du -sb "${target}" | awk '{print $1}') | gzip -1 > "${target%/*}".tar.gz
tar -c "${target}" | pv -s $(du -sb "${target}" | awk '{print $1}') | gzip -1 > "${target%/*}".tgz
# append hash to target name.
mv "${target%/*}".tar.gz "${target%/*}"_${date}-$(sha1sum "${target%/*}".tar.gz | cut -d\ -f1).tar.gz
mv "${target%/*}".tgz "${target%/*}"_${date}-$(sha1sum "${target%/*}".tgz | cut -d\ -f1).tgz
# report success.
echo -e "${color_green}${status}: done.${color_default}"
@ -239,6 +239,7 @@ archive_convert()
local old_format="_[[:alnum:]]{40}.tar.[xg]z"
local targets=($(ls | grep -E ${old_format}))
# add timestamp.
for target in "${targets[@]}"; do
local stamp=$(stat --format '%w' -- "${target}" | sed -e 's/\..*//' -e 's/:..$//' -e 's/-//g' -e 's/://' -e 's/\ //')
local name="${target%_*}"
@ -249,6 +250,30 @@ archive_convert()
mv "${target}" "${new_name}"
done
# convert tar.xz and tar.gz to .tgz and .txz.
old_format="_[0-9]{12}-[[:alnum:]]{40}.tar.[xg]z"
targets=($(ls | grep -E ${old_format}))
for target in "${targets[@]}"; do
local compression="${target##*.}"
local new_compression
case "${compression}" in
"gz")
new_compression="tgz"
;;
"xz")
new_compression="txz"
;;
esac
local new_name="${target%.tar.*}".${new_compression}
echo "${target} -> ${new_name}"
mv -- "${target}" "${new_name}"
done
}
# export everything, primarily for use with parallel..