[Zope] ExternalMethod for exporting un-pickled Office files to the filesystem etc

Tino Wildenhain tino at wildenhain.de
Thu Jun 22 07:02:54 EDT 2006


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




More information about the Zope mailing list