How about something like this: bool do_read = false;
if (ff_pkt->type != FT_LNKSAVED && S_ISREG(ff_pkt->statp.st_mode)) { #ifdef HAVE_WIN32 do_read = !is_portable_backup(&ff_pkt->bfd) || ff_pkt->statp.st_size > 0; #else do_read = ff_pkt->statp.st_size > 0; #endif } else if (ff_pkt->type == FT_RAW || ff_pkt->type == FT_FIFO || (!is_portable_backup(&ff_pkt->bfd) && ff_pkt->type == FT_DIREND)) { do_read = true; } if (do_read) { > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:bacula-users- > [EMAIL PROTECTED] On Behalf Of Kern Sibbald > Sent: Tuesday, February 13, 2007 8:33 AM > To: Robert Nelson > Cc: bacula-users@lists.sourceforge.net > Subject: Re: [Bacula-users] Backing up and restoring Windows permissions > > On Tuesday 13 February 2007 11:29, Robert Nelson wrote: > > Ralf and I did some testing offline. The problem is with zero length > > files, the error is in this code taken from save_file() in > filed/backup.c > > > > /* > > * Open any file with data that we intend to save, then save it. > > * > > * Note, if is_win32_backup, we must open the Directory so that > > * the BackupRead will save its permissions and ownership streams. > > */ > > if (ff_pkt->type != FT_LNKSAVED && (S_ISREG(ff_pkt->statp.st_mode) && > > ff_pkt->statp.st_size > 0) || > > ff_pkt->type == FT_RAW || ff_pkt->type == FT_FIFO || > > (!is_portable_backup(&ff_pkt->bfd) && ff_pkt->type == > FT_DIREND)) > > { > > > > We never open the file or do a BackupRead if the file is zero length. > > > > Kern, can you see any problem if we just remove the ff_pkt- > >statp.st_size > > > 0 portion of the test? > > Yes, that might create some errors on portable Win32 and on Unix, and it > will > certainly cause extra overhead. On those systems, if the filesize is > zero, > we do not want to open it. > > IMO, the if needs to be re-written so that the size test is used in all > cases > except for !is_portable_backup(...). > > Probably about 10-20 minutes of hard thought could produce an if that is > much > more understandable (or several ifs if that is what it takes to simplify > it). > > > > > > > -----Original Message----- > > > From: [EMAIL PROTECTED] [mailto:bacula-users- > > > [EMAIL PROTECTED] On Behalf Of Ralf Ertzinger > > > Sent: Monday, February 12, 2007 11:52 PM > > > To: bacula-users@lists.sourceforge.net > > > Subject: Re: [Bacula-users] Backing up and restoring Windows > permissions > > > > > > Hi. > > > > > > On Mon, 12 Feb 2007 22:48:21 -0800, Robert Nelson wrote: > > > > Are you running an antivirus program? If so, does it still happen > if > > > > the antivirus is disabled? > > > > > > There is no AV program on the Windows machine. > > > > > > > Do you have the portable option set to yes in the FileSet resource? > > > > If so, does it occur if you remove it? > > > > > > To the best of my knowledge this option is not set. The configuration > > > sections relevant to the machine in question are below. > > > > > > Is there a way to see (in the storage) whether the permissions were > > > even saved? bls does not seem to tell me that, it just lists UNIX > > > style permissions. > > > > > > > > > > > > Director config: > > > > > > Director { # define myself > > > Name = banea-dir > > > DIRport = 9101 # where we listen for UA connections > > > QueryFile = "/usr/libexec/bacula/query.sql" > > > WorkingDirectory = "/var/lib/bacula" > > > PidDirectory = "/var/run" > > > Maximum Concurrent Jobs = 1 > > > Password = "GVAslILAQw69HBIVsrX8egWouulz9d58q3DogOPExPnz" # > > > Console password > > > Messages = Daemon > > > } > > > JobDefs { > > > Name = "DefaultJob" > > > Type = Backup > > > Level = Incremental > > > Client = banea-fd > > > FileSet = "Full Set" > > > Schedule = "WeeklyCycle" > > > Storage = File > > > Messages = Standard > > > Pool = Default > > > Priority = 10 > > > } > > > Job { > > > Name = "w2k" > > > client = w2k-fd > > > jobdefs = "DefaultJob" > > > FileSet = "w2k-set" > > > } > > > Job { > > > Name = "BackupCatalog" > > > JobDefs = "DefaultJob" > > > Level = Full > > > FileSet="Catalog" > > > Schedule = "WeeklyCycleAfterBackup" > > > # This creates an ASCII copy of the catalog > > > RunBeforeJob = "/usr/libexec/bacula/make_catalog_backup bacula > bacula" > > > # This deletes the copy of the catalog > > > RunAfterJob = "/usr/libexec/bacula/delete_catalog_backup" > > > Write Bootstrap = "/var/lib/bacula/BackupCatalog.bsr" > > > Priority = 11 # run after main backup > > > } > > > Job { > > > Name = "RestoreFiles" > > > Type = Restore > > > Client=banea-fd > > > FileSet="Full Set" > > > Storage = File > > > Pool = Default > > > Messages = Standard > > > } > > > Fileset { > > > Name = "w2k-set" > > > Include { > > > Options { > > > signature = MD5 > > > } > > > File = "C:/TEMP" > > > } > > > } > > > Schedule { > > > Name = "WeeklyCycle" > > > Run = Full 1st sun at 23:05 > > > Run = Differential 2nd-5th sun at 23:05 > > > Run = Incremental mon-sat at 23:05 > > > } > > > Schedule { > > > Name = "WeeklyCycleAfterBackup" > > > Run = Full sun-sat at 23:10 > > > } > > > FileSet { > > > Name = "Catalog" > > > Include { > > > Options { > > > signature = MD5 > > > } > > > File = /var/lib/bacula/bacula.sql > > > } > > > } > > > Client { > > > Name = w2k-fd > > > Address = ADDIX-RE-W2K.addix.campus > > > FDPort = 9102 > > > Catalog = MyCatalog > > > Password = "12345" # password for FileDaemon > > > File Retention = 30 days # 30 days > > > Job Retention = 6 months # six months > > > AutoPrune = yes # Prune expired Jobs/Files > > > } > > > Storage { > > > Name = File > > > Address = banea.int.addix.net # N.B. Use a fully > > > qualified name here > > > SDPort = 9103 > > > Password = "3mhDDbTYzDcvOmRNKLf1wOlZ5PIjeFHbz2RLqbvDnFzG" > > > Device = FileStorage > > > Media Type = File > > > } > > > Catalog { > > > Name = MyCatalog > > > dbname = bacula; user = bacula; password = bacula > > > } > > > Messages { > > > Name = Standard > > > mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) %r\" -s > > > \"Bacula: %t %e of %c %l\" %r" > > > operatorcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) %r\" > -s > > > \"Bacula: Intervention needed for %j\" %r" > > > mail = [EMAIL PROTECTED] = all, !skipped > > > operator = [EMAIL PROTECTED] = mount > > > console = all, !skipped, !saved > > > append = "/var/lib/bacula/log" = all, !skipped > > > } > > > Messages { > > > Name = Daemon > > > mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) %r\" -s > > > \"Bacula daemon message\" %r" > > > mail = [EMAIL PROTECTED] = all, !skipped > > > console = all, !skipped, !saved > > > append = "/var/lib/bacula/log" = all, !skipped > > > } > > > > > > Pool { > > > Name = Default > > > Pool Type = Backup > > > Recycle = yes # Bacula can automatically > recycle > > > Volumes > > > AutoPrune = yes # Prune expired volumes > > > Volume Retention = 365 days # one year > > > } > > > Console { > > > Name = banea-mon > > > Password = "yktXPUIdRLEz4qrmn8HXgixUfR+pRdiyK2RXK3t3949T" > > > CommandACL = status, .status > > > } > > > > > > > > > FileDaemon config on the Windows machine: > > > # > > > # Default Bacula File Daemon Configuration file > > > # > > > # For Bacula release 2.0.2 (01/28/07) -- Windows MVS > > > # > > > # There is not much to change here except perhaps the > > > # File daemon Name > > > # > > > > > > # > > > # "Global" File daemon configuration specifications > > > # > > > FileDaemon { # this is me > > > Name = addix-re-w2k-fd > > > FDport = 9102 # where we listen for the director > > > WorkingDirectory = "C:\\Dokumente und Einstellungen\\All > > > Users\\Anwendungsdaten\\Bacula\\Work" > > > Pid Directory = "C:\\Dokumente und Einstellungen\\All > > > Users\\Anwendungsdaten\\Bacula\\Work" > > > Maximum Concurrent Jobs = 2 > > > } > > > > > > # > > > # List Directors who are permitted to contact this File daemon > > > # > > > Director { > > > Name = banea-dir > > > Password = "12345" > > > } > > > > > > # > > > # Restricted Director, used by tray-monitor to get the > > > # status of the file daemon > > > # > > > Director { > > > Name = addix-re-w2k-mon > > > Password = "dsB8PGsI0gX2KuH/LWmHUmqk0vlY/NRyd5B9BAHAKz65" > > > Monitor = yes > > > } > > > > > > # Send all messages except skipped files back to Director > > > Messages { > > > Name = Standard > > > director = banea-dir = all, !skipped, !restored > > > } > > > > > > ---------------------------------------------------------------------- > --- > > > Using Tomcat but need to do more? Need to support web services, > security? > > > Get stuff done quickly with pre-integrated technology to make your job > > > easier. > > > Download IBM WebSphere Application Server v.1.0.1 based on Apache > > > Geronimo > > > http://sel.as- > us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > > > _______________________________________________ > > > Bacula-users mailing list > > > Bacula-users@lists.sourceforge.net > > > https://lists.sourceforge.net/lists/listinfo/bacula-users > > ------------------------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job > easier. > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > _______________________________________________ > Bacula-users mailing list > Bacula-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/bacula-users ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier. Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ Bacula-users mailing list Bacula-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bacula-users