Package: backup2l
Version: 1.6-2
Severity: minor
Dear maintainer,
after upgrading tar to 1.30+dfsg-2 it complains about positional
parameters being incorrectly set when used by backup2l:
Creating archive using 'DRIVER_TAR_GZ'...
tar: The following options were used after any non-optional arguments
in archive create or update mode. These options are positional and
affect only arguments that follow them. Please, rearrange them
properly.
tar: --no-recursion has no effect
tar: Exiting with failure status due to previous errors
The archives seem to be created correctly, so there should be no
regression in functionality.
tar is being invoked as
tar czf $3 -T $4 --no-recursion 2>&1
To fix the warning, the --no-recursion parameter should be placed in
front of -T
tar czf $3 --no-recursion -T $4 2>&1
This affects the drivers DRIVER_TAR, DRIVER_TAR_GZ and DRIVER_TAR_BZ2,
including some other options.
Cheers,
Markus
-- System Information:
Debian Release: buster/sid
APT prefers testing
APT policy: (990, 'testing'), (500, 'stable-updates'), (500, 'unstable'),
(500, 'stable')
Architecture: amd64 (x86_64)
Kernel: Linux 4.4.110 (SMP w/1 CPU core)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8),
LANGUAGE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
backup2l depends on no packages.
Versions of packages backup2l recommends:
ii bzip2 1.0.6-8.1
Versions of packages backup2l suggests:
ii xz-utils 5.2.2-1.3
-- Configuration Files:
/etc/backup2l.conf changed:
FOR_VERSION=1.6
VOLNAME="guybrush"
SRCLIST=(
/boot
/etc
/root
/home
/srv
/opt
/var
/usr/local
)
SKIPCOND=(
-path "*.nobackup*"
-o -type s
-o -path "/var/cache" -prune
-o -path "/var/lock" -prune
-o -path "/var/run" -prune
-o -path "/var/tmp" -prune
-o -path "/var/lib/mysql" -prune
)
BACKUP_DEV="/mount/backup"
BACKUP_DIR="/mount/backup/guybrush/files"
MAX_LEVEL=3
MAX_PER_LEVEL=5
MAX_FULL=2
GENERATIONS=2
CREATE_CHECK_FILE=1
PRE_BACKUP ()
{
#echo " pre-backup: nothing to do"
# e. g., shut down some mail/db servers if their files are to be backup'ed
# On a Debian system, the following statements dump a machine-readable list
of
# all installed packages to a file.
#echo " writing dpkg selections to /root/dpkg-selections.log..."
#dpkg --get-selections | diff - /root/dpkg-selections.log > /dev/null ||
dpkg --get-selections > /root/dpkg-selections.log
echo " writing dpkg selections to /root/dpkg-selections.log..."
dpkg --get-selections | diff - /root/.dpkg-selections.log > /dev/null ||
dpkg --get-selections > /root/dpkg-selections.log
}
POST_BACKUP ()
{
# e. g., restart some mail/db server if its files are to be backup'ed
#echo " post-backup: nothing to do"
# automysqlbackup
echo " backing up MySQL Databases..."
/usr/sbin/automysqlbackup | sed 's/^/ /'
# Backup MySQL
# Purge old MySQL backups
}
AUTORUN=0
SIZE_UNITS="M" # set to "B", "K", "M" or "G" to obtain unified units in
summary list
TIME_ZONE="UTC" # if unset (= ""), the local time zone is used for backup meta
data;
# For new archives, the value "UTC" is recommended. However,
older versions (<= 1.5) used local time,
# and changing the value causes backup2l to consider ALL files
as new. So, change this value with care!
DRIVER_MY_AFIOZ ()
{
case $1 in
-test)
# This function should check whether all prerequisites are met,
especially if all
# required tools are installed. This prevents backup2l to fail in
inconvenient
# situations, e. g. during a backup or restore operation. If
everything is ok, the
# string "ok" should be returned. Everything else is interpreted as
a failure.
require_tools afio
# The function 'require_tools' checks for the existence of all
tools passed as
# arguments. If one of the tools is not found by which(1), an
error message is
# displayed and the function does not return.
echo "ok"
;;
-suffix)
# This function should return the suffix of backup archive files.
If the driver
# does not create a file (e. g. transfers the backup data
immediately to a tape
# or network device), an empty string has to be returned. backup2l
uses this suffix
# to select a driver for unpacking. If a user-configured driver
supports the same
# suffix as a built-in driver, the user driver is preferred (as in
this case).
echo "afioz"
;;
-create) # Arguments: $2 = BID, $3 = archive file name, $4 =
file list file
# This function is called to create a backup file. The argument $3
is the full file
# name of the archive file including path and suffix. $4 contains
an alphabetically
# sorted list of files (full pathname) to be backed up.
Directories are not contained,
# they are handled by backup2l directly without using the driver.
# All output to stderr should be directed to stdout ("2>&1").
afio -Zo -G 9 -M 30m -T 2k $3 < $4 2>&1
# This line passes some additional options to afio (see
afio(1)):
# '-G 9' maximizes the compression by gzip.
# '-M 30m' increases the size of the internal file buffer.
Larger files have to
# be compressed twice.
# '-T 2k' prevents the compression of files smaller than 2k in
order to save time.
;;
-toc) # Arguments: $2 = BID, $3 = archive file name
# This function is used to validate the correct generation of an
archive file.
# The output is compared to the list file passed to the '-create'
function.
# Any difference is reported as an error.
afio -Zt $3 | sed 's#^#/#'
# The sed command adds a leading slash to each entry.
;;
-extract) # Arguments: $2 = BID, $3 = archive file name, $4 =
file list file
# This function is called by backup2l's restore procedure for each
archive.
# It is extremely important that only those files contained in $4
are restored.
# Otherwise it may happen that files are overwritten by incorrect
(e. g. older)
# versions of the same file.
afio -Zinw $4 $3 2>&1
;;
esac
}
DRIVER_TAR_GZ_SPLIT ()
{
case $1 in
-test)
require_tools tar split cat
echo "ok"
;;
-suffix)
echo "tgz_split"
;;
-create) # Arguments: $2 = BID, $3 = archive file name, $4 =
file list file
mkdir -p ${3}
tar cz -T $4 --no-recursion | split --bytes=725100100 - ${3}/part_
;;
-toc) # Arguments: $2 = BID, $3 = archive file name
cat ${3}/part_* | tar tz | sed 's#^#/#'
;;
-extract) # Arguments: $2 = BID, $3 = archive file name, $4 =
file list file
cat ${3}/part_* | tar xz --same-permission --same-owner -T $4 2>&1
;;
esac
}
DRIVER_TAR_GZ ()
{
case $1 in
-test)
require_tools tar
echo "ok"
;;
-suffix)
echo "tar.gz"
;;
-create) # Arguments: $2 = BID, $3 = archive file name, $4 =
file list file
tar czf $3 -T $4 --no-recursion --atime-preserve 2>&1 \
| grep -v 'tar: Removing leading .* from .* names'
;;
-toc) # Arguments: $2 = BID, $3 = archive file name
tar tzf $3 | sed 's#^#/#'
;;
-extract) # Arguments: $2 = BID, $3 = archive file name, $4 =
file list file
tar zx --same-permission --same-owner -f $3 -T $4 2>&1
;;
esac
}
DRIVER_MY_AFIOBZ2 ()
{
case $1 in
-test)
require_tools afio bzip2
echo "ok"
;;
-suffix)
echo "afio-bz2"
;;
-create) # Arguments: $2 = BID, $3 = archive file name, $4 =
file list file
afio -z -1 m -P bzip2 -Q -9 -Z -M 50m -T 1k -o $3 <$4 2>&1
# This line passes some additional options to afio (see
afio(1)):
# '-P bzip2' utilizes bzip2 as an external compressor
# '-Q 9' maximizes the compression by bzip2.
# '-M 50m' increases the size of the internal file buffer.
Larger files have to
# be compressed twice.
# '-T 1k' prevents the compression of files smaller than 1k in
order to save time.
;;
-toc) # Arguments: $2 = BID, $3 = archive file name
afio -t -Z -P bzip2 -Q -d - <$3 | sed 's#^#/#'
# The sed command adds a leading slash to each entry.
;;
-extract) # Arguments: $2 = BID, $3 = archive file name, $4 =
file list file
afio -Zinw $4 -P bzip2 -Q -d - <$3 2>&1
;;
esac
}
DRIVER_MY_AFIO_BZ2 ()
{
case $1 in
-test)
require_tools afio bzip2
echo "ok"
;;
-suffix)
echo "afio.bz2"
;;
-create) # Arguments: $2 = BID, $3 = archive file name, $4 =
file list file
afio -o - < $4 | bzip2 --best > $3 2>&1
;;
-toc) # Arguments: $2 = BID, $3 = archive file name
bzip2 -d < $3 | afio -t - | sed 's#^#/#'
# The sed command adds a leading slash to each entry.
;;
-extract) # Arguments: $2 = BID, $3 = archive file name, $4 =
file list file
bzip2 -d < $3 | afio -inw $4 - 2>&1
;;
esac
}
DRIVER_ZIP ()
{
case $1 in
-test)
require_tools zip
echo "ok"
;;
-suffix)
echo "zip"
;;
-create) # Arguments: $2 = BID, $3 = archive file name, $4 =
file list file
cat $4| zip -qy $3 -@
;;
-toc) # Arguments: $2 = BID, $3 = archive file name
zipinfo -1 $3| sed 's#^#/#'
;;
-extract) # Arguments: $2 = BID, $3 = archive file name, $4 =
file list file
echo "Not implemented yet! Sorry."
#unzip $3
;;
esac
}
DRIVER_TAR_GPG ()
{
case $1 in
-test)
require_tools tar gpg
echo "ok"
;;
-suffix)
echo "tar.pgp"
;;
-create) # Arguments: $2 = BID, $3 = archive file name, $4 =
file list file
tar -c -T $4 --no-recursion | /usr/bin/gpg --batch --no-tty -q
--passphrase-fd 3 3</etc/backup2l.pass -c - > $3
;;
-toc) # Arguments: $2 = BID, $3 = archive file name
/usr/bin/gpg --batch --no-tty -q --passphrase-fd 3
3</etc/backup2l.pass -d $3 2>/dev/null | tar t | sed 's#^#/#'
;;
-extract) # Arguments: $2 = BID, $3 = archive file name, $4 =
file list file
/usr/bin/gpg --batch --no-tty -q --passphrase-fd 3
3</etc/backup2l.pass -d $3 2>/dev/null | tar -x --same-permission --same-owner
-T $4 2>&1
;;
esac
}
DRIVER_TAR_GZ_PIGZ () {
case $1 in
-test)
require_tools tar gzip pigz cat
echo "ok"
;;
-suffix)
echo "tar.gz"
;;
-create) # Arguments: $2 = BID, $3 = archive file name, $4 = file list
file
tar cf - --files-from=$4 | pigz --best > $3 2>&1
;;
-toc) # Arguments: $2 = BID, $3 = archive file name
cat $3 | tar tz | sed 's#^#/#'
;;
-extract) # Arguments: $2 = BID, $3 = archive file name, $4 = file list
file
cat $3 | pigz -d | tar x --same-permission --same-owner
--files-from=$4 2>&1
;;
esac
}
DRIVER_TAR_LZ ()
{
case $1 in
-test)
require_tools tar lzip
echo "ok"
;;
-suffix)
echo "tar.lz"
;;
-create) # Arguments: $2 = BID, $3 = archive file name, $4 =
file list file
tar -c -T $4 --no-recursion | lzip --best -c > $3 2>&1 \
| grep -v 'tar: Removing leading .* from .*'
;;
-toc) # Arguments: $2 = BID, $3 = archive file name
lzip -d $3 -c | tar t | sed 's#^#/#'
;;
-extract) # Arguments: $2 = BID, $3 = archive file name, $4 =
file list file
lzip -d $3 -c | tar -x --same-permission --same-owner -T $4 2>&1
;;
esac
}
-- no debconf information