Rsnapshotはexcludeをrsyncに直接渡しますが、rsyncの動作に一貫性がないように見えます。
Rsnapshotバックアップテストを次のディレクトリツリーに簡略化しました(このツリーはバックアップされます)。
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
私の設定ファイル:
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
結果:
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
私の混乱は、rsnapshotによってエコーされたrsyncコマンドをコピーして貼り付けると、SKIPTHISディレクトリが除外されるという事実から生じています。 (他のさまざまなSKIPTHISパターンでテストしたところ、同じ結果が得られました。)
何が起こっているのか分かりますか?
Rsyncの冗長性をオンにするway upは、問題を示しています。
rsync_short_args -avvv
出力:
[client] add_rule(-s "SKIPTHIS/")
シェルにコピーして貼り付けていたとき、シェルは引用符を消費していて、rsyncは次のように言っていました。
[client] add_rule(-s SKIPTHIS/)
設定ファイルの除外ルールを次のように変更します。
exclude SKIPTHIS/**
動作します。