michael nt milne schrieb:
Hi
Just wondering if anyone has written or attempted to write a script
which would read through a site built using Zope and write all
attached/uploaded files (Word, PDF, Excel) etc to a filesystem location
in an un-pickled format. Therefore the files would be usable by their
native application and be accessible outside of Zope. The business logic
behind this is to be able to create, say once a day at night, a copy of
all digital business assets for extra back-up and recovery purposes in
case of disaster. Also this would be good for migration purposes if
required.
If not, how long would it take to create such a script? I could probably
source a sponsor for it. I realise that it's best to do this at the
application level and at the moment this would be through Plone.
I've demoed all the Plone external storage products and also checked out
DirectoryStorage but all these store pickled files etc.
----------- snip ----------
import os
import sys
try:
targetdir=sys.argv[1]
except IndexError:
print "usage: zopectl run %s <target dirrectory>" % sys.argv[0]
def filedump(resulttuple,basedir):
pathname,fileobject=resulttuple
print "dumping %s (%d Bytes)" % (fileobject.getId(),fileobject.size)
o=open(os.path.join(basedir,pathname.replace('/','_')+fileobject.getId()),"wb")
o.write(str(fileobject.data))
for res in app.ZopeFind(app,obj_metatypes=['File'])
filedump(res,targetdir)
--------- snip -----------
and run this over ZEO via zopectl run thescript.py somewhere/to/targetdir
There are possibly many improvements (creating subdirectories, fixing extensions
and so on)
Regards
Tino Wildenhain
_______________________________________________
Zope maillist - Zope@zope.org
http://mail.zope.org/mailman/listinfo/zope
** No cross posts or HTML encoding! **
(Related lists -
http://mail.zope.org/mailman/listinfo/zope-announce
http://mail.zope.org/mailman/listinfo/zope-dev )