[Mailman-Users] Backing up Mailman list installations
gward at mems-exchange.org
Thu Nov 29 16:58:48 CET 2001
On 29 November 2001, Thomas T. Veldhouse said:
> If that is the case, then are these files portable between Python
> implementations and versions?
Yes, with the proviso that the format for Python bytecode (which is also
stored in marshal files -- you see them as .pyc files) usually changes
with each new Python version. But Mailman doesn't marshal bytecode,
just lists and dictionaries.
Here's proof -- and, at the same time, a handy method for dumping
Mailman config.db files to human-readable form. I wrote this little
script, called pprint_marshal:
from marshal import load
from pprint import pprint
fn = sys.argv
f = open(fn)
d = load(f)
Then I transferred the ~mailman/lists tree from our mail server to my
development machine. (Both are running Debian Linux on x86 processors,
so that's not much of a portability challenge.) I ran the script on a
particular config.db with Python 1.5.2, 2.0, 2.1.1, and 2.2b1; it worked
just fine on all of them. Eg.
$ python1.5 pprint_marshal mailman/lists/test/config.db
$ python2.0 pprint_marshal mailman/lists/test/config.db
$ python2.1 pprint_marshal mailman/lists/test/config.db
$ python2.2 pprint_marshal mailman/lists/test/config.db
Except for some minor changes in how Python formats strings, I got the
same result each time.
Then I copied everything to our old mail server, a Sun running Solaris
2.6. Only Python 1.5 and 1.6 were available there, and again I got the
Oh yeah, we moved all our Mailman lists from that Sun machine
(big-endian, Solaris) to an x86 Linux machine (little-endian) a few
months ago, and had no problems whatsoever. It never even occurred to
me that Mailman might use a non-portable format for config.db! (C'mon,
give the Mailman cabal a little more credit...)
> I had a horrible problem moving a mailman
> 2.0.2 using Python 1.52 on FreeBSD to Mailman 2.0.3 using Python 1.6 on
> Linux (2.2) about one year ago. The files could NOT be read by mailman. I
> was forced to add all the users to the new list by hand and thus reset all
> the passwords and settings for each user (most unhappy about that). It was
> also a bit of a pain to get the archives working again so that users could
> browse them on the web.
That sounds awful -- my sympathies. I have no idea what could have gone
wrong, but I'm quite confident that config.db files are portable across
architectures and Python versions.
> I am not an expert with them -- I avoid them in favor of true RDBMS. I was
> under and assumption that they were in platform specific binary files
> (though the file layout maybe the same on each platform, byte ordering could
> make a difference).
Not that this has *anything* to do with Mailman, but: Berkeley DB files
have a byte-order, but are platform-independent. Using a little-endian
file on a big-endian machine obviously incurs a runtime penalty, and
Greg Ward - software developer gward at mems-exchange.org
MEMS Exchange http://www.mems-exchange.org
More information about the Mailman-Users