[Box Backup] Long path names, open files, etc

Chris Wilson boxbackup@boxbackup.org
Tue, 31 Mar 2009 13:55:21 +0200 (CEST)


Hi Achim,

On Tue, 31 Mar 2009, Achim wrote:

>>> [request to consider implementing volume shadow copies in Windows]
>>
>> Unfortunately it is very complicated, or it would have been done by 
>> now. There are a huge number of interfaces, it behaves differently on 
>> XP and 2003 (and probably vista), and so far I've only been able to 
>> develop code with Visual Studio, not with my Windows normal development 
>> platform of vi + mingw on Windows 2000. It doesn't even work on Windows 
>> 2000.
>
> It appears that Bacula [1], another great FLOSS backup solution has
> implemented VSS in its client software for Windows [2]. Looking at the
> source coude [3], they tackled the different interfaces you mention by
> adding one abstraction layer vss_generic.cpp, and then relying on specific
> implementations for XP, Vista, and W2K3. In addition, they appear to be
> able to build all this with MingW [4]!

It's interesting to know that they can build with mingw, although the 
Makefile doesn't make it clear what setup they needed to do to make this 
possible, e.g. copying of header files, conversion of libraries, etc. I 
also have to be careful not to copy their code as it is GPL licensed and 
Box Backup is not.

> You are correct that VSS was introduced in XP and 2003 server and is 
> therefore not available in Windows 2000. However, there is a client 
> software available from Microsoft [5] for W2K that allows it to access 
> VSS volumes on other machines. Perhaps this installs at least the 
> necessary hooks, even though the functionality won't be there on native 
> W2K volumes?

Possibly, yes, will need to look into that.

> As an alternative (if this is interesting to you) I am certain that 
> there is enough interest on this list to give you a valid XP/Vista 
> license if this is holding back development.

An XP license would definitely be a great help in that regard.

>> It's also non-free in the sense that we can't distribute the SDK needed 
>> to compile Box with this function enabled, so anyone who wants to do so 
>> would have to download that SDK from Microsoft.
>
> Bacula distributes its source code as free GPL code with an exception 
> for linking to OpenSSL and VSS [6]:

Box Backup's license is not strictly speaking the problem.

One problem is that other people's ability to make use of the code, e.g. 
your own, could be severely hampered by integration of VSS, by it becoming 
much harder to build with VSS.

The other is that until we work out how to compile with VSS on MinGW, I 
can only use Visual Studio, and I am not allowed to distribute the runtime 
needed to run Box Backup compiled with Visual Studio free edition, and I 
don't have a paid license. Nor do I particularly wish to switch 
development to Visual Studio. See mailing list archives passim ad 
infinitum for more info.

> Perhaps this is something that would be possible with Box' license?

The Box license needs no exceptions as it does not prevent linking with 
non-free code. Boxi on the other hand would need an exception.

> In addition, only the developers have to download the SDK in order to be
> able to compile Box, running Box with VSS support only relies on system
> libraries that come by default with XP, Vista and 2003: no download of the
> SDK required for the users!

Yes, but developers are as important as users in my view, and just as 
worth supporting and not impeding.

> PS: Box' current workaround of using a script to create the shadow 
> copies is not the only one, perhaps we should join forces with BackupPC 
> for this purpose and design the ultimate robust VSS script in the mean 
> time [7]?

Yes, I'd definitely agree that using the NotifyScript is the best 
short-term solution, and if the script needs improvement then I fully 
support that.

Cheers, Chris.
-- 
_ ___ __     _
  / __/ / ,__(_)_  | Chris Wilson <0000 at qwirx.com> - Cambs UK |
/ (_/ ,\/ _/ /_ \ | Security/C/C++/Java/Perl/SQL/HTML Developer |
\ _/_/_/_//_/___/ | We are GNU-free your mind-and your software |