Usage
- Works on Cygwin: Automated tests pass, real backup succeeded.
- Note that the Cygwin version uses temporary files for the deduplicated chunks, as part of the xz compression
and decompression processes. This is because Windows (even Cygwin on Windows) doesn't have a proper fork, which
sometimes breaks the subprocess module. Sometimes rebaseall will help with the fork problems, but
sometimes rebaseall fails - it's more convenient to just avoid fork (and hence subprocess), and that
was simplest to accomplish by using temporary files.
- Note that Cygwin is not spectacularly secure - it puts "OS Private" data in shared memory, where anyone
on a given system can see it if they know where to look. However, most Windows machines will have a single
user on them at a time anyway. For "terminal servers" (the Microsoft kind), this is an issue.
- To write to a CIFS share from Samba:
- Map network drive using workgroupname\root and root's password.
- In Computer -> sharename -> security -> user root, grant full control
- You now should be able to write to the share by using a UNC path, like
//host.name.com/sharename/backshift/save-directory
- This seems to work in a mintty (cygwin shell window) if you're glued to the console, but fails in a
Cygwin ssh session.
- Hopefully it could be made to work in Task Scheduler (like cron), but it might be a big pain to do if you
want the share to only be visible during a backup, for a small extra degree of security.
Development notes
- CPython+Cygwin builds:
- CPython 3.2 doesn't build in Cygwin out of the box. CPython 2.7 does.
- CPython 3.1 doesn't either.
- Porting...
- For the solaris port, I made the automated tests able to use only a single version of Python, so it's
time to try Windows again.
- Windows had problems with os.fork() - word on the net is that you have to stop all your Cygwin
processes and run "rebaseall" from an ash or dash to fix the problem. Windows DLL's seem quite like
AIX's messy shared libraries.
- However, rebaseall kept failing - for me and some others.
- Coded around it using os.popen, but only for Windows+Cygwin. Other OS's continue to use subprocess.Popen.