[compression_utils] Add script xzize
xzize is a tool to (re)compress to xz.
This commit is contained in:
parent
6a40e9ba27
commit
f7c2f3aec7
|
@ -1,3 +1,5 @@
|
||||||
|
# lz and uz #
|
||||||
|
|
||||||
The lz script emulates and extends commands lz and uz from the mtools.
|
The lz script emulates and extends commands lz and uz from the mtools.
|
||||||
|
|
||||||
It handles: tar, tar.gz, tar.bz2, tar.xz, tar.lzma and tar.Z (and
|
It handles: tar, tar.gz, tar.bz2, tar.xz, tar.lzma and tar.Z (and
|
||||||
|
@ -13,3 +15,17 @@ To install lz and uz, move put script in a directory in the PATH (for
|
||||||
instance /usr/local/bin) and hard link it to uz:
|
instance /usr/local/bin) and hard link it to uz:
|
||||||
cp lz /usr/local/bin
|
cp lz /usr/local/bin
|
||||||
ln /usr/local/bin/{lz,uz}
|
ln /usr/local/bin/{lz,uz}
|
||||||
|
|
||||||
|
|
||||||
|
# xzize #
|
||||||
|
|
||||||
|
The xzize script compresses an uncompressed file, or recompresses a
|
||||||
|
compressed file to xz (with maximum compression level).
|
||||||
|
|
||||||
|
Known compression formats are GZip (.gz), BZip2 (.bz2), LZMA (.lzma),
|
||||||
|
and Lempel-Ziv (.Z).
|
||||||
|
|
||||||
|
In case of recompression, the original compressed file is keeped. In
|
||||||
|
case of compression (i.e. when the suffix of the file does not
|
||||||
|
correspond to a known compression format), the original uncompressed
|
||||||
|
file is removed.
|
||||||
|
|
|
@ -0,0 +1,102 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# xzize, Copyright © 2010 Matteo Cypriani
|
||||||
|
#
|
||||||
|
# This program is free software. It comes without any warranty, to
|
||||||
|
# the extent permitted by applicable law. You can redistribute it
|
||||||
|
# and/or modify it under the terms of the Do What The Fuck You Want
|
||||||
|
# To Public License, Version 2, as published by Sam Hocevar. See
|
||||||
|
# http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||||
|
#
|
||||||
|
# This script recompresses to xz (with maximum compression level) a
|
||||||
|
# GZip (.gz), BZip2 (.bz2), LZMA (.lzma), and Lempel-Ziv (.Z)
|
||||||
|
# compressed file. The original file is keeped.
|
||||||
|
# If the file extension does not correspond to a known compression
|
||||||
|
# format, the file is compressed to xz. In that case, the original
|
||||||
|
# file is removed.
|
||||||
|
|
||||||
|
|
||||||
|
set -u
|
||||||
|
|
||||||
|
|
||||||
|
test_extension()
|
||||||
|
{
|
||||||
|
local - FILE EXTENSION BASE
|
||||||
|
FILE="$1"
|
||||||
|
EXTENSION="$2"
|
||||||
|
BASE="`basename "$FILE" ."$EXTENSION"`"
|
||||||
|
if [ "$BASE" != "$FILE" ] ; then
|
||||||
|
DEST="$BASE".xz
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
DEST="$FILE"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
do_recompress()
|
||||||
|
{
|
||||||
|
if [ -e "$DEST" ] ; then
|
||||||
|
echo "Skipping source file « $SOURCE »: destination file « $DEST » already exists!" >&2
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
echo "Recompressing « $SOURCE » to « $DEST »…"
|
||||||
|
$ACTION -c $SOURCE | xz -9 >$DEST
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
## Verify number of arguments ##
|
||||||
|
|
||||||
|
if [ $# -lt 1 ] ; then
|
||||||
|
echo "$PROGRAM requires at least one argument!" >&2
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
## Process files ##
|
||||||
|
|
||||||
|
for SOURCE in "$@" ; do
|
||||||
|
|
||||||
|
# GZip
|
||||||
|
test_extension "$SOURCE" gz
|
||||||
|
if [ "$DEST" != "$SOURCE" ] ; then
|
||||||
|
ACTION=gunzip
|
||||||
|
do_recompress
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# BZip2
|
||||||
|
test_extension "$SOURCE" bz2
|
||||||
|
if [ "$DEST" != "$SOURCE" ] ; then
|
||||||
|
ACTION=bunzip2
|
||||||
|
do_recompress
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# LZMA
|
||||||
|
test_extension "$SOURCE" lzma
|
||||||
|
if [ "$DEST" != "$SOURCE" ] ; then
|
||||||
|
ACTION=unlzma
|
||||||
|
do_recompress
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Compress
|
||||||
|
test_extension "$SOURCE" Z
|
||||||
|
if [ "$DEST" != "$SOURCE" ] ; then
|
||||||
|
ACTION=uncompress
|
||||||
|
do_recompress
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# XZ
|
||||||
|
if test_extension "$SOURCE" xz ; then
|
||||||
|
echo "Skipping source file « $DEST »: it has already .xz suffix!" >&2
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Uncompressed file: fall back to simple compression
|
||||||
|
xz -9 "$SOURCE"
|
||||||
|
|
||||||
|
done
|
Loading…
Reference in New Issue