我們有兩臺運行我們公司內部站點的zope服務器。一個是活網站,一個是開發網站。我正在編寫一個python腳本,它將所有事情從dev服務器移動到活動服務器。現在,這個過程包含了一系列在zope管理界面中完成的步驟。我需要自動完成所有這些,以便運行一個腳本處理它。我需要做的一件事就是從實時服務器導出一個文件夾,以便在更新後將其重新導入到實時站點。我該如何從python腳本執行此操作?使用python導出zope文件夾
我們正在使用Zope的2.8和Python 2.3.4
我們有兩臺運行我們公司內部站點的zope服務器。一個是活網站,一個是開發網站。我正在編寫一個python腳本,它將所有事情從dev服務器移動到活動服務器。現在,這個過程包含了一系列在zope管理界面中完成的步驟。我需要自動完成所有這些,以便運行一個腳本處理它。我需要做的一件事就是從實時服務器導出一個文件夾,以便在更新後將其重新導入到實時站點。我該如何從python腳本執行此操作?使用python導出zope文件夾
我們正在使用Zope的2.8和Python 2.3.4
你可以嘗試使用manage_exportObject
和manage_importObject
所在的文件$ZOPE_HOME/lib/python/OFS/ObjectManager.py
讓我們說,在我們安裝位於兩個Zope的2.8實例的功能:
/tmp/instance/dev
的開發服務器(端口8080)/tmp/instance/prod
生產服務器(端口9090 )在開發服務器ZMI,我已經創建了兩個文件夾/MyFolder1
和/MyFolder2
包含一些頁面模板。下面的Python腳本出口.zexp文件的每個文件夾,然後導入它們在ZMI生產實例:
#!/usr/bin/python
import urllib
import shutil
ids_to_transfer = ['MyFolder1', 'MyFolder2']
for id in ids_to_transfer:
urllib.urlopen('http://admin:[email protected]:8080/manage_exportObject?id=' + id)
shutil.move('/tmp/instance/dev/var/' + id + '.zexp', '/tmp/instance/prod/import/' + id + '.zexp')
urllib.urlopen('http://admin:[email protected]:9090/manage_delObjects?ids=' + id)
urllib.urlopen('http://admin:[email protected]:9090/manage_importObject?file=' + id + '.zexp')
爲了使這個更一般的,允許複製文件夾不能在根目錄下,我會做這樣的事情:
#!/usr/bin/python
import urllib
import shutil
username_dev = 'admin'
username_prod = 'admin'
password_dev = 'password_dev'
password_prod = 'password_prod'
url_dev = 'localhost:8080'
url_prod = 'localhost:9090'
paths_and_ids_to_transfer = [('level1/level2/','MyFolder1'), ('level1/','MyFolder2')]
for path, id in ids_to_transfer:
urllib.urlopen('http://%s:%[email protected]%s/%smanage_exportObject?id=%s' % (username_dev, password_dev, url_dev, path, id))
shutil.move('/tmp/instance/dev/var/' + id + '.zexp', '/tmp/instance/prod/import/' + id + '.zexp')
urllib.urlopen('http://%s:%[email protected]%s/%smanage_delObjects?ids=%s' % (username_prod, password_prod, url_prod, path, id))
urllib.urlopen('http://%s:%[email protected]%s/%smanage_importObject?file=%s.zexp' % (username_prod, password_prod, url_prod, path, id))
如果我有代表我想補充一點其他的答案,但可惜... 如果有人想將它們合併,那就請便吧。
如果你真的移動所有東西你可能只需要移動Data.fs。但否則上面的導入/導出是一個好方法。
我其實移動除了一個文件夾以外的所有東西。所以,我導出一個文件夾,移動data.fs,然後重新導入一個文件夾。 – 2009-06-25 13:42:18
這就是我正在尋找的。 – 2009-06-15 17:01:47