On 3/2/07, Wayne Davison <wayned@samba.org> wrote:> Make the auto-generated protect filters use the perishable flag so
> that they don't stop a vanished directory from being removed.
1. I don't think the --backup rule should be perishable. If I delete
an entire directory from the source, I would expect the receiver to
back up the files inside and not discard the backups just because I
deleted the whole directory.
2. The filters added in setup_protocol in compat.c don't seem to be
taking effect on local rsyncs. See this run of CVS rsync to which I
added some debugging output:
[matt@mattlaptop backup]$ ~/rsync/rsync/rsync -in -vv -a --backup
--del src/ dest/
Parsed rule Pp *~ <-- setup_protocol
am_sender is 1, filter_list.head is 8878ac8
sending incremental file list
testing is_excluded .
testing is_excluded dir
am_sender is 1, filter_list.head is 0 <-- I assume the sender elided
the protect rule.
testing is_excluded dir/foo
am_sender is 1, filter_list.head is 0
delta-transmission disabled for local transfer or --whole-file
.d ./
testing is_excluded dir
am_sender is 0, filter_list.head is 0 <-- ** Receiving side doesn't
have the rule!
.d dir/
testing is_excluded dir/foo
am_sender is 0, filter_list.head is 0
testing is_excluded dir/foo~
am_sender is 0, filter_list.head is 0
*deleting dir/foo~ <-- And consequently the receiver deletes the backup
file.
.f dir/foo
total: matches=0 hash_hits=0 false_alarms=0 data=0
sent 94 bytes received 22 bytes 232.00 bytes/sec
total size is 4 speedup is 0.03
I think this is because setup_protocol runs after the receiving side
is forked off, so it is too late for the receiving side to inherit the
filters.
Matt