diff options
author | Wayne Davison <wayned@samba.org> | 2006-01-30 21:52:17 +0000 |
---|---|---|
committer | Wayne Davison <wayned@samba.org> | 2006-01-30 21:52:17 +0000 |
commit | b587adda1fba778ffd9a68a00798dea787ba1dc5 (patch) | |
tree | 052c0ab2ed5c03a377d9acd736e90c9fb19d1c02 /support/files-to-excludes | |
parent | 50fd4832c244422436fc657b95c94139e89602af (diff) | |
download | rsync-b587adda1fba778ffd9a68a00798dea787ba1dc5.tar.gz |
This perl script automates the conversion of a list of pathnames
to a set of includes/excludes needed for rsync to copy just the
listed files.
Diffstat (limited to 'support/files-to-excludes')
-rwxr-xr-x | support/files-to-excludes | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/support/files-to-excludes b/support/files-to-excludes new file mode 100755 index 00000000..5fb13b08 --- /dev/null +++ b/support/files-to-excludes @@ -0,0 +1,27 @@ +#!/usr/bin/perl +# This script takes an input of filenames and outputs a set of +# include/exclude directives that can be used by rsync to copy +# just the indicated files using an --exclude-from=FILE option. +use strict; + +my %hash; + +while (<>) { + chomp; + s#^/+##; + my $path = '/'; + while (m#([^/]+/)/*#g) { + $path .= $1; + print "+ $path\n" unless $hash{$path}++; + } + if (m#([^/]+)$#) { + print "+ $path$1\n"; + } else { + delete $hash{$path}; + } +} + +foreach (sort keys %hash) { + print "- $_*\n"; +} +print "- /*\n"; |