Package: rsnapshot
Version: 1.3.1-4
Severity: normal

Hi.

rsnapshot from Jessie incorrectly handles quotes in per-backup
'+rsync_long_args' option (in wheezy it works fine) - it does not remove them.
Though, quotes are required, if e.g. i want to add per-backup '--filter'
option.

How to reproduce:
1. Build..

    $ git checkout debian/1.3.1-4
    Previous HEAD position was 773afb8... Enable GNU cp and document 
stop_on_stale_lockfile option
    HEAD is now at 324f3d7... Bump to Standards-Version 3.9.4, change 
Vcs-{Git,Browse} and avoid rsnapshot-HOWTO.en.html duplication

    $ quilt push -a
    Applying patch debian/patches/01_rsnapshot_conf.diff
    patching file rsnapshot.conf.default.in
    patching file rsnapshot-program.pl
    patching file rsnapshot-program.pl

    Applying patch debian/patches/03_pod_missing_back.diff
    patching file rsnapshot-program.pl

    Applying patch debian/patches/05_backup_pgsql.diff
    patching file utils/backup_pgsql.sh

    Applying patch debian/patches/06_fix_random_file_verify.diff
    patching file utils/random_file_verify.sh

    Applying patch debian/patches/08_manpage_hourly_to_daily.diff
    patching file rsnapshot-program.pl

    Applying patch debian/patches/09_strip_backtick.diff
    patching file rsnapshot-program.pl

    Applying patch debian/patches/10_space_destdir.diff
    patching file rsnapshot-program.pl

    Applying patch debian/patches/11_lvm_snapshots.diff
    patching file rsnapshot.conf.default.in
    Hunk #2 succeeded at 202 (offset 6 lines).
    Hunk #3 succeeded at 235 (offset 6 lines).
    patching file configure.ac

    Applying patch debian/patches/12_include_conf_with_arguments.diff
    patching file rsnapshot-program.pl

    Applying patch debian/patches/13_print_warn.diff
    patching file rsnapshot-program.pl

    Now at patch debian/patches/13_print_warn.diff

    $ ./configure
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    checking for gawk... gawk
    checking whether make sets $(MAKE)... yes
    checking whether make sets $(MAKE)... (cached) yes
    checking for a BSD-compatible install... /usr/bin/install -c
    checking for perl... /usr/bin/perl
    checking for rsync... /usr/bin/rsync
    checking for cp... /bin/cp
    checking for rm... /bin/rm
    checking for ssh... /usr/bin/ssh
    checking for logger... /usr/bin/logger
    checking for du... /usr/bin/du
    configure: creating ./config.status
    config.status: creating Makefile
    config.status: creating rsnapshot
    config.status: creating rsnapshot-diff
    config.status: creating rsnapshot.conf.default
    config.status: creating t/support/etc/configtest.conf
    config.status: creating t/support/etc/rsync.conf
    config.status: creating t/support/etc/gnu_cp.conf
    config.status: creating t/support/etc/relative_delete_bugfix.conf
    config.status: creating t/configtest.t
    config.status: creating t/rsync.t
    config.status: creating t/gnu_cp.t
    config.status: creating t/relative_delete_bugfix.t

    Now type  "make test"    to run the regression test suite.
    Then type "make install" to install the program.

    After rsnapshot is installed, don't forget to copy
    /usr/local/etc/rsnapshot.conf.default to /usr/local/etc/rsnapshot.conf

    $ make
    cd . && /bin/bash /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/missing 
--run aclocal-1.9
    /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/missing: line 52: 
aclocal-1.9: command not found
    WARNING: `aclocal-1.9' is missing on your system.  You should only need it 
if
             you modified `acinclude.m4' or `configure.ac'.  You might want
             to install the `Automake' and `Perl' packages.  Grab them from
             any GNU archive site.
     cd . && /bin/bash 
/home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/missing --run automake-1.9 
--gnu
    /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/missing: line 52: 
automake-1.9: command not found
    WARNING: `automake-1.9' is missing on your system.  You should only need it 
if
             you modified `Makefile.am', `acinclude.m4' or `configure.ac'.
             You might want to install the `Automake' and `Perl' packages.
             Grab them from any GNU archive site.
    cd . && /bin/bash /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/missing 
--run autoconf
    /bin/bash ./config.status --recheck
    running /bin/bash ./configure   --no-create --no-recursion
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    checking for gawk... gawk
    checking whether make sets $(MAKE)... yes
    checking whether make sets $(MAKE)... (cached) yes
    checking for perl... /usr/bin/perl
    checking for rsync... /usr/bin/rsync
    checking for cp... /bin/cp
    checking for rm... /bin/rm
    checking for ssh... /usr/bin/ssh
    checking for lvcreate... no
    checking for lvremove... no
    checking for mount... /bin/mount
    checking for umount... /bin/umount
    checking for logger... /usr/bin/logger
    checking for du... /usr/bin/du
    configure: creating ./config.status

    Now type  "make test"    to run the regression test suite.
    Then type "make install" to install the program.

    After rsnapshot is installed, don't forget to copy
    /usr/local/etc/rsnapshot.conf.default to /usr/local/etc/rsnapshot.conf

     /bin/bash ./config.status
    config.status: creating Makefile
    config.status: WARNING:  'Makefile.in' seems to ignore the --datarootdir 
setting
    config.status: creating rsnapshot
    config.status: creating rsnapshot-diff
    config.status: creating rsnapshot.conf.default
    config.status: creating t/support/etc/configtest.conf
    config.status: creating t/support/etc/rsync.conf
    config.status: creating t/support/etc/gnu_cp.conf
    config.status: creating t/support/etc/relative_delete_bugfix.conf
    config.status: creating t/configtest.t
    config.status: creating t/rsync.t
    config.status: creating t/gnu_cp.t
    config.status: creating t/relative_delete_bugfix.t
    /usr/bin/pod2man -c '' -n 'rsnapshot' -r '' rsnapshot > rsnapshot.1
    /usr/bin/pod2man -c '' -n 'rsnapshot-diff' -r '' rsnapshot-diff > 
rsnapshot-diff.1

2. Use this config:

    $ diff -u rsnapshot.conf.default ../rsn.conf
    --- rsnapshot.conf.default      2015-07-26 18:07:17.043999255 +0300
    +++ ../rsn.conf 2015-07-26 18:07:32.992906393 +0300
    @@ -24,7 +24,7 @@

     # All snapshots will be stored under this root directory.
     #
    -snapshot_root  /var/cache/rsnapshot/
    +snapshot_root  /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/

     # If no_create_root is enabled, rsnapshot will not automatically create the
     # snapshot_root directory. This is particularly useful if you are backing
    @@ -111,7 +111,7 @@
     # 4     Extra Verbose   Show extra verbose information
     # 5     Debug mode      Everything
     #
    -verbose                2
    +verbose                3

     # Same as "verbose" above, but controls the amount of data sent to the
     # logfile, if one is being used. The default is 3.
    @@ -128,7 +128,7 @@
     # If you enable this, make sure the lockfile directory is not world
     # writable. Otherwise anyone can prevent the program from running.
     #
    -lockfile       /var/run/rsnapshot.pid
    +#lockfile      /var/run/rsnapshot.pid

     # By default, rsnapshot check lockfile, check if PID is running
     # and if not, consider lockfile as stale, then start
    @@ -227,9 +227,10 @@
     ###############################

     # LOCALHOST
    -backup /home/          localhost/
    -backup /etc/           localhost/
    -backup /usr/local/     localhost/
    +#backup        /home/          localhost/
    +#backup        /etc/           localhost/
    +#backup        /usr/local/     localhost/
    +backup /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/      localhost/  
    +rsync_long_args=--filter='. 
/home/sgf/Documents/rsnapshot/src/3rd/t/etc.rsync-filter'
     #backup        /var/log/rsnapshot              localhost/
     #backup        /etc/passwd     localhost/
     #backup        /home/foo/My Documents/         localhost/

where rsync filter is

    $ cat ../etc.rsync-filter
    - .git/

3. And run..

    $ perl ./rsnapshot-program.pl -c ../rsn.conf hourly
    /bin/rm -rf /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.5/
    mv /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.4/ \
        /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.5/
    mv /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.3/ \
        /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.4/
    mv /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.2/ \
        /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.3/
    mv /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.1/ \
        /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.2/
    /bin/cp -al /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.0 \
        /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.1
    /usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
        --filter='. /home/sgf/Documents/rsnapshot/src/3rd/t/etc.rsync-filter' \
        --exclude=bkp /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot \
        
/home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.0/localhost/
    Unknown filter rule: `'. 
/home/sgf/Documents/rsnapshot/src/3rd/t/etc.rsync-filter''
    rsync error: syntax or usage error (code 1) at exclude.c(904) [client=3.1.1]
    ----------------------------------------------------------------------------
    rsnapshot encountered an error! The program was invoked with these options:
    ./rsnapshot-program.pl -c ../rsn.conf hourly
    ----------------------------------------------------------------------------
    ERROR: /usr/bin/rsync returned 1 while processing 
/home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/
    touch /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.0/

if i'll use script, which outputs its own arguments instead of rsync (in 
'cmd_rsync'):

    $ cat ../lspp.sh
    #!/bin/sh

    for f; do
        echo "$f"
    done

i'll get

    $ perl ./rsnapshot-program.pl -c ../rsn.conf hourly
    /bin/rm -rf /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.5/
    mv /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.4/ \
        /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.5/
    mv /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.3/ \
        /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.4/
    mv /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.2/ \
        /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.3/
    mv /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.1/ \
        /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.2/
    /bin/cp -al /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.0 \
        /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.1
    /home/sgf/Documents/rsnapshot/src/3rd/t/lspp.sh -a --delete --numeric-ids \
        --relative --delete-excluded --filter='. \
        /home/sgf/Documents/rsnapshot/src/3rd/t/etc.rsync-filter' --exclude=bkp 
\
        /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot \
        
/home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.0/localhost/
    -a
    --delete
    --numeric-ids
    --relative
    --delete-excluded
    --filter='. /home/sgf/Documents/rsnapshot/src/3rd/t/etc.rsync-filter'
    --exclude=bkp
    /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot
    /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.0/localhost/
    touch /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.0/

(i.e. quotes are passed in argument, but they should be removed).

Without quotes

    backup /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/      localhost/   
   +rsync_long_args=--filter=. 
/home/sgf/Documents/rsnapshot/src/3rd/t/etc.rsync-filter

this example does not work either:

    $ perl ./rsnapshot-program.pl -c ../rsn.conf hourly
    /bin/rm -rf /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.5/
    mv /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.4/ \
        /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.5/
    mv /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.3/ \
        /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.4/
    mv /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.2/ \
        /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.3/
    mv /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.1/ \
        /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.2/
    /bin/cp -al /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.0 \
        /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.1
    /usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
        --filter=. /home/sgf/Documents/rsnapshot/src/3rd/t/etc.rsync-filter \
        --exclude=bkp /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot \
        
/home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.0/localhost/
    unexpected end of filter rule: .
    rsync error: syntax or usage error (code 1) at exclude.c(1013) 
[client=3.1.1]
    ----------------------------------------------------------------------------
    rsnapshot encountered an error! The program was invoked with these options:
    ./rsnapshot-program.pl -c ../rsn.conf hourly
    ----------------------------------------------------------------------------
    ERROR: /usr/bin/rsync returned 1 while processing 
/home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/
    touch /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/hourly.0/

Using this

    backup  /home/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/      localhost/  
    +rsync_long_args='--filter=. 
/home/sgf/Documents/rsnapshot/src/3rd/t/etc.rsync-filter'

results in rsync treating --filter option as file:

    rsync: link_stat 
"/home/common/sgf/Documents/rsnapshot/src/3rd/t/rsnapshot/bkp/'--filter=. 
/home/sgf/Documents/rsnapshot/src/3rd/t/etc.rsync-filter'" failed: No such file 
or directory (2)


-- System Information:
Debian Release: 8.1
  APT prefers stable
  APT policy: (990, 'stable')
Architecture: i386 (i686)

Kernel: Linux 3.16.0-4-686-pae (SMP w/2 CPU cores)
Locale: LANG=en_US.utf8, LC_CTYPE=ru_RU.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages rsnapshot depends on:
ii  liblchown-perl  1.01-2+b1
ii  logrotate       3.8.7-1+b1
ii  perl            5.20.2-3+deb8u1
ii  rsync           3.1.1-3

Versions of packages rsnapshot recommends:
ii  openssh-client [ssh-client]  1:6.7p1-5

rsnapshot suggests no packages.

-- Configuration Files:
/etc/cron.d/rsnapshot changed [not included]
/etc/rsnapshot.conf changed [not included]

-- debconf-show failed


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to