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

Achim boxbackup@boxbackup.org
Tue, 31 Mar 2009 11:11:29 +0200


Hello Chris:

On Mon, 30 Mar 2009 22:07:32 +0200 (CEST), Chris Wilson <chris@qwirx.com>
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]!

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?

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.

> 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]:

"Linking: 
As a special exception to the GPLv2, the Bacula Project gives
permission to link the code of its release of Bacula with the OpenSSL
project's "OpenSSL" library (or with modified versions of it that use
the same license as the "OpenSSL" library), and distribute the linked
executables.  You must obey the GNU General Public License in all
respects for all of the code used other than "OpenSSL".

As a special exception to the GPLv2, the Bacula Project gives
permission to link the code of its release of the Bacula Win32 File
daemon with the Microsoft supplied Volume Shadow Copy (VSS) libraries
and distribute the linked executables.  You must obey the GNU General
Public License in all respects for all of the code used other than for
the Microsoft VSS code, where you must obey their license terms."

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

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!

Best regards, Achim

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]?

[1] <http://www.bacula.org/>
[2]
<http://www.bacula.org/en/rel-manual/Windows_Version_Bacula.html#SECTION004260000000000000000>
[3]
<http://bacula.svn.sourceforge.net/viewvc/bacula/trunk/bacula/src/win32/filed/?pathrev=8346>
[4]
<http://bacula.svn.sourceforge.net/viewvc/bacula/trunk/bacula/src/win32/filed/Makefile?revision=8088&view=markup&pathrev=8346>
[5] <http://technet.microsoft.com/en-us/windowsserver/bb405951.aspx>
[6]
<http://bacula.svn.sourceforge.net/viewvc/bacula/trunk/bacula/LICENSE?revision=8310&view=markup&pathrev=8346>
[7]
<http://article.gmane.org/gmane.comp.sysutils.backup.backuppc.general/17439/match=mountrsyncshadows>