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

Reply via email to