Matt wrote: >Suresh Govindachar wrote: > >> How about the following scheme? >> >> open /e/cmds/foo >> <do till end-of-file>: >> <begin-continue> >> >> discard lines till there is a match to some/path/projects/c_a >> >> keep lines till there is a match to a directory outside c_a >> Note that the lines being kept could be >> data/commands corresponding to files inside c_a >> >> <end-continue> >> <end-do> >> write kept lines to new batch file > > This is a clever idea, but I think it would be very difficult to > subset the batch file correctly since the rsync protocol is quite > complex (and binary). For one thing, the new batch file would > need to contain the protocol initialization and at least the > relevant portion of the file list. You might be able to > accomplish this by keeping everything until the first file > transfer is logged, but that won't work if the sender used > incremental recursion because the relevant portion of the file > list will be randomly interspersed with file transfers. > > If you need to restore a subtree from a batch file, another thing > you could do is make a modified copy of rsync just for the job > with a strncmp thrown in to skip all file transfers except the > ones in the subtree. Also, instead of a batch file, you might > consider copying to a new destination with --compare-dest to the > original; that gives you a tree of changed files from which you > can easily restore files or subtrees. Thanks for pointing out --compare-dest: I verified it on a test directory and this feature does indeed offer a resolution to the situation described in the original post.
(I have a follow up question which belongs to another thread.) --Suresh -- To unsubscribe or change options: https://lists.samba.org/mailman/listinfo/rsync Before posting, read: http://www.catb.org/~esr/faqs/smart-questions.html