Chris wrote: > Suresh wrote: >> >> Responding to the question of how to use the batch file >> /e/cmds/foo created via the command: >> >>> rsync -a --only-write-batch=/e/cmds/foo /c/home/wer/work/ /e/gold >> >> to selectively restore a subdirectory of work/ such as >> >> some/path/projects/c_a >> >> into a new location such as >> >> /f/new_home/wer/work >> >> which has a copy of some/path/projects/c_a gotten from /e/gold but >> is otherwise empty, Matt wrote: >> >>> Rsync currently doesn't provide a good way to do this. It would >>> be great if sender filters could be used to control which >>> file-list entries from the batch file are processed. For now, a >>> hackish way to quickly recover a subdirectory is to --read-batch >>> to a destination that has been set up specially so that the user >>> cannot write to anything in the destination except the >>> subdirectory to be recovered. >> >> Is there a specification for the format of the batch file? >> Might it be possible to write a script to read /e/cmds/foo and >> create a new batch file that would correspond to having been >> created while >> rsync'ing --only-write-batch of work/<path>/c_a with gold/<path>/c_a? > > The batch file format is simply a dump of rsync's network > protocol. That way, replaying the batch file is quite similar to > performing the original sync, except for the bytes come from the > file instead of from the socket. > > At least, that's the way it worked last time I looked, which was > several years ago.
How about the following scheme? To help with the following scheme, it would be OK to require that there be no symbolic links from within c_a to outside c_a; and that "--log-file=log" have been used in the original rsync command (the one that generated /e/cmds/foo). The log file might help with fine-tuning 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 Will the lines kept correspond to the batch file for rsync'ing --only-write-batch of work/<path>/c_a with gold/<path>/c_a? How can the log file be used to fine tune the above scheme? Thanks, --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