Por que essa exclusão do rsnapshot não funciona?

2

O rsnapshot passa diretamente para o rsync, mas o comportamento do rsync parece inconsistente.

Eu simplifiquei meu teste de backup do rsnapshot para a seguinte árvore de diretórios (essa árvore será salva em backup):

gorilla:~# find /tmp/snaptest -exec file {} \;
/tmp/snaptest: directory
/tmp/snaptest/SKIPTHIS: directory
/tmp/snaptest/SKIPTHIS/xyz: directory
/tmp/snaptest/SKIPTHIS/xyz/testing: ASCII text
/tmp/snaptest/SKIPTHIS/bar: ASCII text
/tmp/snaptest/SKIPTHIS/foo: ASCII text
/tmp/snaptest/SKIPTHIS.txt: ASCII text

Meu arquivo de configuração:

config_version  1.2
snapshot_root   /tmp/backup-media
no_create_root  1
cmd_cp      /bin/cp
cmd_rm      /bin/rm
cmd_rsync   /usr/bin/rsync
cmd_ssh /usr/bin/ssh
cmd_logger  /usr/bin/logger
cmd_du      /usr/bin/du
interval    hourly  6
interval    daily   7
interval    weekly  4
interval    monthly 3
verbose     3
loglevel    3
logfile /media/maxtor-one-touch/rsnapshot.log
lockfile    /media/maxtor-one-touch/backups/.rsnapshot.pid
rsync_short_args    -a
rsync_long_args --delete --numeric-ids --relative --delete-excluded
exclude "SKIPTHIS/**"
link_dest   1
backup  /tmp/snaptest   snaptest

O resultado:

gorilla:~# rsnapshot -c /tmp/snaptest.conf hourly
echo 12638 > /media/maxtor-one-touch/backups/.rsnapshot.pid 
mkdir -m 0755 -p /tmp/backup-media/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    --exclude="SKIPTHIS/**" /tmp/snaptest \
    /tmp/backup-media/hourly.0/snaptest 
touch /tmp/backup-media/hourly.0/ 
rm -f /media/maxtor-one-touch/backups/.rsnapshot.pid 
gorilla:~# find /tmp/backup-media/ -exec file {} \;
/tmp/backup-media/: directory
/tmp/backup-media/hourly.0: directory
/tmp/backup-media/hourly.0/snaptest: directory
/tmp/backup-media/hourly.0/snaptest/tmp: sticky directory
/tmp/backup-media/hourly.0/snaptest/tmp/snaptest: directory
/tmp/backup-media/hourly.0/snaptest/tmp/snaptest/SKIPTHIS: directory
/tmp/backup-media/hourly.0/snaptest/tmp/snaptest/SKIPTHIS/xyz: directory
/tmp/backup-media/hourly.0/snaptest/tmp/snaptest/SKIPTHIS/xyz/testing: ASCII text
/tmp/backup-media/hourly.0/snaptest/tmp/snaptest/SKIPTHIS/bar: ASCII text
/tmp/backup-media/hourly.0/snaptest/tmp/snaptest/SKIPTHIS/foo: ASCII text
/tmp/backup-media/hourly.0/snaptest/tmp/snaptest/SKIPTHIS.txt: ASCII text

Minha confusão decorre do fato de que, se eu copiar e colar o comando rsync ecoado pelo rsnapshot, o diretório SKIPTHIS será excluído! (Eu testei com vários outros padrões SKIPTHIS com os mesmos resultados.)

Alguma ideia do que está acontecendo?

    
por bstpierre 03.11.2009 / 19:13

1 resposta

3

Ativar a verbosidade do rsync subir mostra o problema:

rsync_short_args    -avvv

Saída:

[client] add_rule(-s "SKIPTHIS/")

Considerando que quando eu estava copiando e colando no shell, o shell estava consumindo aspas e o rsync dizia:

[client] add_rule(-s SKIPTHIS/)

Alterando a regra de exclusão no meu arquivo de configuração para:

exclude SKIPTHIS/**

funciona.

    
por 03.11.2009 / 19:39