[compression_utils] Add script xzize

xzize is a tool to (re)compress to xz.
This commit is contained in:
Matteo Cypriani 2010-01-31 13:13:20 +01:00
parent 6a40e9ba27
commit f7c2f3aec7
2 changed files with 118 additions and 0 deletions

View File

@ -1,3 +1,5 @@
# lz and uz #
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
@ -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:
cp lz /usr/local/bin
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.

102
compression_utils/xzize Executable file
View File

@ -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