Compare commits

..

No commits in common. "d321ec97611cd133cb2e885d2dc4f18f9f185a2b" and "c661ccd8ebadbc712f559b78118ebfb61564ae7a" have entirely different histories.

3 changed files with 119 additions and 133 deletions

View File

@ -43,13 +43,11 @@ compressed file to XZ (with default compression level).
Known compression formats are GZip (.gz), BZip2 (.bz2), LZMA (.lzma), and
Lempel-Ziv (.Z). Short tar compressed suffixes are also allowed: .tgz, .tbz,
.tb2, .tlz, .taz (and the output file's extension will be .txz).
.tb2, .tlz, .taz.
In case of recompression, the original compressed file is kept (so you can
compare input and output file sizes and decide to keep the original or the
recompressed file). 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.
In case of recompression, the original compressed file is kept. 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.
**Note**: the atool package provides the `arepack` command, which can
recompress to several formats and not only to XZ. `xzize` has the advantage to

View File

@ -1,6 +1,6 @@
#!/bin/sh
#
# xzize.sh, Copyright © 2010, 2019 Matteo Cypriani
# xzize.sh, 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
@ -8,159 +8,156 @@
# 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 one or several GZip (.gz, .tgz), BZip2 (.bz2,
# .tbz, .tb2), LZMA (.lzma, .tlz), or Lempel-Ziv (.Z, .taz) compressed file(s).
# The original files are kept.
#
# If a file extension does not correspond to a known compression format, that
# file is compressed to XZ. In that case, the original file is removed.
#
# If the file is already XZ-compressed (.xz, .txz), nothing is done.
# This script recompresses to XZ (with maximum compression level) a
# GZip (.gz, .tgz), BZip2 (.bz2, .tbz, .tb2), LZMA (.lzma, .tlz), and
# Lempel-Ziv (.Z, .taz) 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.
# If the file is already XZ compressed (.xz, .txz), nothing is done.
#set -x
set -u
# Destination file suffix when source file name suffix is a
# 3-letter compressed tar suffix:
readonly TAR_XZ_EXT=txz
TAR_XZ_EXT=txz
# Default compression level:
COMPRESSION_LEVEL=
test_extension()
{
FILE="$1"
EXTENSION="$2"
NEWEXTENSION=xz
if [ $# -eq 3 ] ; then
NEWEXTENSION="$3"
fi
FILE="$1"
EXTENSION="$2"
NEWEXTENSION=xz
if [ $# -eq 3 ] ; then
NEWEXTENSION="$3"
fi
BASE="$(echo "$FILE" | sed "s/\.${EXTENSION}//")"
if [ "$BASE" != "$FILE" ] ; then
DEST="$BASE".$NEWEXTENSION
return 0
fi
BASE="$(basename "$FILE" ."$EXTENSION")"
if [ "$BASE" != "$FILE" ] ; then
DEST="$BASE".$NEWEXTENSION
return 0
fi
DEST="$FILE"
return 1
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 $COMPRESSION_LEVEL >"$DEST"
return $?
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 $COMPRESSION_LEVEL >"$DEST"
return $?
}
## Verify number of arguments ##
if [ $# -lt 1 ] ; then
echo "$0 requires at least one argument!" >&2
exit 2
echo "$0 requires at least one argument!" >&2
exit 2
fi
## Process files ##
for SOURCE in "$@" ; do
# Does source file exist?
if [ ! -e "$SOURCE" ] ; then
echo "Skipping source file « $SOURCE »: does not exist!" >&2
continue
fi
# Does source file exist?
if [ ! -e "$SOURCE" ] ; then
echo "Skipping source file « $SOURCE »: does not exist!" >&2
continue
fi
# Is source file regular?
if [ ! -f "$SOURCE" ] ; then
echo "Skipping source file « $SOURCE »: is not a regular file!" >&2
continue
fi
# Does source file is regular?
if [ ! -f "$SOURCE" ] ; then
echo "Skipping source file « $SOURCE »: is not a regular file!" >&2
continue
fi
# GZip
if test_extension "$SOURCE" gz ; then
ACTION="gunzip"
do_recompress
continue
fi
# GZip
if test_extension "$SOURCE" gz ; then
ACTION=gunzip
do_recompress
continue
fi
# GZipped Tar (.tgz)
if test_extension "$SOURCE" tgz $TAR_XZ_EXT ; then
ACTION="gunzip"
do_recompress
continue
fi
# GZipped Tar (.tgz)
if test_extension "$SOURCE" tgz $TAR_XZ_EXT ; then
ACTION=gunzip
do_recompress
continue
fi
# BZip2
if test_extension "$SOURCE" bz2 ; then
ACTION="bunzip2"
do_recompress
continue
fi
# BZip2
if test_extension "$SOURCE" bz2 ; then
ACTION=bunzip2
do_recompress
continue
fi
# BZipped Tar (.tbz)
if test_extension "$SOURCE" tbz $TAR_XZ_EXT ; then
ACTION="bunzip2"
do_recompress
continue
fi
# BZipped Tar (.tbz)
if test_extension "$SOURCE" tbz $TAR_XZ_EXT ; then
ACTION=bunzip2
do_recompress
continue
fi
# BZipped Tar (.tb2)
if test_extension "$SOURCE" tb2 $TAR_XZ_EXT ; then
ACTION="bunzip2"
do_recompress
continue
fi
# BZipped Tar (.tb2)
if test_extension "$SOURCE" tb2 $TAR_XZ_EXT ; then
ACTION=bunzip2
do_recompress
continue
fi
# LZMA
if test_extension "$SOURCE" lzma ; then
ACTION="unlzma"
do_recompress
continue
fi
# LZMA
if test_extension "$SOURCE" lzma ; then
ACTION=unlzma
do_recompress
continue
fi
# LZMA compressed Tar (.tlz)
if test_extension "$SOURCE" tlz $TAR_XZ_EXT ; then
ACTION="unlzma"
do_recompress
continue
fi
# LZMA compressed Tar (.tlz)
if test_extension "$SOURCE" tlz $TAR_XZ_EXT ; then
ACTION=unlzma
do_recompress
continue
fi
# Compress
if test_extension "$SOURCE" Z ; then
ACTION="uncompress"
do_recompress
continue
fi
# Compress
if test_extension "$SOURCE" Z ; then
ACTION=uncompress
do_recompress
continue
fi
# Compressed Tar (.taz)
if test_extension "$SOURCE" taz $TAR_XZ_EXT ; then
ACTION="uncompress"
do_recompress
continue
fi
# Compressed Tar (.taz)
if test_extension "$SOURCE" taz $TAR_XZ_EXT ; then
ACTION=uncompress
do_recompress
continue
fi
# XZ
if test_extension "$SOURCE" xz ; then
echo "Skipping source file « $DEST »: has already .xz suffix!" >&2
continue
fi
# XZ
if test_extension "$SOURCE" xz ; then
echo "Skipping source file « $DEST »: has already .xz suffix!" >&2
continue
fi
# XZipped Tar (.txz)
if test_extension "$SOURCE" txz $TAR_XZ_EXT ; then
echo "Skipping source file « $DEST »: seems to be a XZipped Tar archive (.txz suffix)!" >&2
continue
fi
# XZipped Tar (.txz)
if test_extension "$SOURCE" txz $TAR_XZ_EXT ; then
echo "Skipping source file « $DEST »: seems to be a XZipped Tar archive (.txz suffix)!" >&2
continue
fi
# Uncompressed file: fall back to simple compression
echo "Compressing « $SOURCE » to xz…"
xz $COMPRESSION_LEVEL "$SOURCE"
# Uncompressed file: fall back to simple compression
echo "Compressing « $SOURCE » to xz…"
xz $COMPRESSION_LEVEL "$SOURCE"
done
# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4

View File

@ -1,6 +1,6 @@
#!/bin/sh
#
# tabssh.sh, Copyright © 2013, 2019 Matteo Cypriani <mcy@lm7.fr>
# tabssh.sh, Copyright © 2013 Matteo Cypriani <mcy@lm7.fr>
# (Formerly named cluster-ssh.sh)
#
# This program is free software. It comes without any warranty, to
@ -56,14 +56,9 @@ elif [ $# -ne 1 ] ; then
fi
# Check dependencies
TMUX_CMD=$(command -v tmux)
SCREEN_CMD=$(command -v screen)
if [ -n "$TMUX_CMD" ] ; then
echo "tmux is available, we'll be using it."
elif [ -n "$SCREEN_CMD" ] ; then
echo "tmux is not available, we'll be using GNU screen instead."
else
err "Either tmux or GNU screen is required by this script."
SCREEN=$(command -v screen)
if [ -z "$SCREEN" ] ; then
err "GNU screen is required by this script."
exit $EXIT_DEPENDENCY
fi
@ -87,10 +82,6 @@ fi
# Create the screen tabs
while read -r HOST ; do
SSH="ssh ${LOGIN}${HOST}"
if [ -n "$TMUX_CMD" ] ; then
$TMUX_CMD new-window -d -n "$SSH" -- "$SSH"
else
# shellcheck disable=SC2086
$SCREEN_CMD -t "$SSH" $SSH
fi
# shellcheck disable=SC2086
$SCREEN -t "$SSH" $SSH
done <"$HOSTS"