From: <cba...@us...> - 2003-08-12 06:28:40
|
tn...@st... writes: > Connecting via smbclient I can cd to /notes/data/mail, and do a ls *.ft > and get the directory listing. > > smb: \> cd /notes/data/mail > smb: \notes\data\mail\> ls *.ft > auser.ft D 0 Sun Aug 10 07:44:59 2003 > tnelson.ft D 0 Sun Aug 10 11:53:48 2003 > [snip] > > I was hoping that I could simply exclude *.ft so I created the > server-specific config file as follows: > > $Conf{SmbShareName} = ['c$', 'd$', 'e$']; > $Conf{BackupFilesExclude} = { > 'e$' => ['/notes/data/mail/*.ft', '/notes/data/*.ft'], > }; > > The command that I see backuppc running on the server is: > > backuppc 3354 3350 6 12:45 pts/1 00:00:00 > /usr/local/samba/bin/smbclient \\tisnotes\e$ -U administrator -E -N -d 1 > -c tarmode full -TcrX - /notes/data/mail/*.ft /notes/data/*.ft > > Now that I look at this, I wonder if this is a shell expansion problem? Is > there a way around this other than specifying each .ft directory? No, the wild-cards have been correctly escaped. > Any help would be greatly appreciated as these full text indexes run me > out of hard drive space on the backup server extremely quickly. $Conf{BackupFilesExclude} is implemented by the transport program, so it behaves in different ways depending upon $Conf{XferMethod}. For SMB, smbclient uses the -X (exclude) tar option, with the files appended to the argument list. Do man smbclient to look at the "X" and "r" options: X Exclude files and directories. Causes tar files to be excluded from an extract or create. See example below. Filename globbing works in one of two ways now. See r below. r Regular expression include or exclude. Uses regu lar regular expression matching for excluding or excluding files if compiled with HAVE_REGEX_H. How ever this mode can be very slow. If not compiled with HAVE_REGEX_H, does a limited wildcard match on * and ?. First off, with the -r option, smbclient only handles a single exclude file. Annoying, huh? There is a patch floating around for smbclient that fixes this. Perhaps this is your problem: is it correctly excluding /notes/data/mail/*.ft but not /notes/data/*.ft? Second, the type of globbing depends upon how smbclient was built. Likely, HAVE_REGEX_H is not defined, so it defaults to a limited wildcard match using "*" and "?", similar to what DOS command-line does. You could look at the code for ms_fnmatch() in samba to see what it does. And/or add debug statements to source/client/clitar.c in the samba source. Another possibility is to just use this: $Conf{BackupFilesExclude} = { 'e$' => ['*.ft'], }; Or you could switch to rsync, which has much more advanced control over exclude files... Craig |