filelist calculation algoritm

jw schultz jw at
Sun Jan 5 01:04:00 EST 2003

On Sat, Jan 04, 2003 at 04:02:23PM -0800, Wayne Davison wrote:
> On Sat, Jan 04, 2003 at 12:40:05PM -0800, jw schultz wrote:
> > One specifying subpaths and the other for those having a shared
> > prefix.
> I don't see why this is needed.  For instance, your example of a shared
> prefix:
> > 	find srcdir | myfilter | rsync --file-list - srcdir destloc
> would be easily written without any sharing:
>     find srcdir | myfilter | rsync --file-list - . destloc

that would produce destloc/srcdir/....
when you might want a copy of srcdir at destloc instead of
in destloc.

> or:
>     find /foo/bar | myfilter | rsync --file-list - / destloc

And that would produce destloc/foo/bar/...
What if you wanted destloc/bar/...  or destloc/...
That could be achieved with "rsync --file-list - /foo destloc"
or "rsync --file-list - /foo/bar destloc" respectively

> Am I missing something?

The scope of source also affects what constitutes a safe

> > doing
> > 	rsync --file-list-relative - src dest <<EOL"
> > 	file1
> > 	file2
> > 	dir1/file3
> > 	EOL
> > would actually sync
> > 	src/file1
> > 	src/file2
> > 	src/dir1
> > 	src/dir1/file3
> > to
> > 	dest/file1
> > 	dest/file2
> > 	dest/dir1
> > 	dest/dir1/file3
> I think that should only happen if the --relative option is set.
> Otherwise all 3 files should go directly into "dest".

I don't think so.  --relative would create
Would it not?

The point here is to tell rsync "sync these files from this
location to this other location"

	find /foo/bar | myfilter | while read f; do rsync $f destloc${f#/foo/bar}; done
	--include-from filelist --exclude '*' --exclude '*/'

These are what we currently tell people to do.  The first
has lots of overhead for the session setup and teardown and
fork/exec.  The second has you walking entire file trees
comparing patterns (apparently non-intuitive) when we only
care about a set list of files.

In any case the --file-list approach will meet peoples real
(and imagined) needs in a much more direct way.

At this time, i don't need this functionality myself.  But
this hits the list quite frequently and i thought it would
be good to discuss what it should look like before someone
cranks out a patch that is poorly thought out.

	J.W. Schultz            Pegasystems Technologies
	email address:		jw at

		Remember Cernan and Schmitt

More information about the rsync mailing list