How to avoid copying empty directories?
Dave Madole
dmadole at Zantaz.com
Thu Nov 29 10:46:13 EST 2001
I agree with this - a perl script to generate a list of "includes" from a list of
directories
is not hard to write (below in "long and readable" rather than compact perly
form), and what about --python and --awk:
#cat frag.pl
#!/usr/bin/perl -w
# frag.pl - perl fragment for generating include list for rsync
my $includes = "";
my %already = ();
my @pathlist = <>;
foreach my $path (@pathlist) {
chop $path;
my @subdirs = split(/\//,$path);
my $dirs;
foreach my $dir (@subdirs) {
$dirs .= $dir."/";
unless(defined($already{$dirs}) && $already{$dirs} eq "included") {
$includes .= " --include ".$dirs;
$already{$dirs} = "included";
}
}
$includes .= " --include $path/**";
}
$includes .= " --exclude \"*\" ";
print $includes,"\n";
#cat test
dir1/local/src/dir1
dir2/local/bin
dir2/local/src
#cat test | ./frag.pl
--include dir1/ --include dir1/local/ --include dir1/local/src/ --include
dir1/local/src/dir1/ --include dir1/local/src/dir1/** --include dir2/ --include
dir2/local/ --include dir2/local/bin/ --include dir2/local/bin/** --include
dir2/local/src/ --include dir2/local/src/** --exclude "*"
Dave Dykstra wrote:
> On Thu, Nov 29, 2001 at 09:23:18AM +1100, Martin Pool wrote:
> > On 28 Nov 2001, Dave Dykstra <dwd at bell-labs.com> wrote:
> > > On Tue, Nov 27, 2001 at 04:03:58PM -0800, btang at pacific.jpl.nasa.gov wrote:
> > > > rsync -avu --include 'tmp1/*/*.c' --include "*/" --exclude "*" tmp1 tmp2
> > > >
> > > > The above command copies all the empty directories under tmp1/ . Is there
> > > > any way to avoid it?
> > >
> > > Currently the only way is to explicitly include the parent directories
> > > you want instead of --include "*/".
> >
> > A quick fix is to post-process the directory with
> >
> > find tmp2 -type d -empty -depth -exec rmdir {} \;
> >
> > I think the best fix is to add scripting support:
> >
> > rsync -avu --perl 'filter() { ( -d && -s ) || /\.c$/; }' here friendly:/tmp
> >
> > Anybody else like this idea?
>
> Nah, the best fix in this case is --files-from. I'm not too keen on the
> scripting idea. Seems like more bloat to me. With --files-from people
> can use whatever script they like to generate the list of files before
> sending it to rsync.
>
> - Dave
More information about the rsync
mailing list