17

查看 plone.org 以找到一种方法来定期打包我的实例的 ZODB 我只能找到不谈论自动打包的http://plone.org/documentation/faq/how-do-i-pack-the-zodb,但只是手动启动的。

我知道我可以使用 wget 或 curl 模拟手动打包,但我想知道这是否是用于生产站点的最佳实践。

4

7 回答 7

25

如果您使用的是 ZEO,您可以将以下内容添加到您的 Crontab 中来执行此操作:

0 1 * * 6 <path-to-buildout>/bin/zeopack

如果您不想手动执行此操作,请将其添加到您的 buildout.cfg 中,当您运行 bin/buildout 时,上面的 crontab 条目将自动添加:

parts += crontab_zeopack

# pack your ZODB each Sunday morning and hence make it smaller and faster
[crontab_zeopack]
recipe = z3c.recipe.usercrontab
times = 0 1 * * 6
command = ${buildout:directory}/bin/zeopack
于 2011-03-14T16:05:25.483 回答
6

如果您不使用 ZEO:

curl -X POST -d 'days:float=0' http://admin:admin@localhost:8080/Control_Panel/Database/main/manage_pack
于 2011-03-15T09:21:46.017 回答
5

我这样做(来自https://raw.github.com/plock/pins/master/zeo):

[backup]
recipe = collective.recipe.backup

# Backup daily
[backups]
recipe = z3c.recipe.usercrontab
times = 0 0 * * * 
command = ${buildout:bin-directory}/bin/backup

# Pack once a month
[packups]
recipe = z3c.recipe.usercrontab
times = 0 0 1 * * 
command = ${buildout:bin-directory}/bin/zeopack
于 2011-04-07T00:32:01.643 回答
2

您可能想查看collective.migrator。它有一个 pack_db 配方等。

于 2011-04-05T17:51:11.373 回答
2

将 zeopack 用于 ZEO(请参阅其他答案),将 zodbpack 用于 RelStorage(包括在内,请参阅 RelStorage 文档)。两者都很容易设置。

于 2012-04-14T20:59:23.817 回答
1

对于 python/urllib 解决方案,请参阅:http ://www.zope.org/Documentation/Books/ZopeBook/2_6Edition/MaintainingZope.stx

#!/usr/bin/python
import sys, urllib
host = sys.argv[1]
days = sys.argv[2]
url = "%s/Control_Panel/Database/manage_pack?days:float=%s" % \
      (host, days)
try: 
    f = urllib.urlopen(url).read()
except IOError:
    print "Cannot open URL %s, aborting" % url
print "Successfully packed ZODB on host %s" % host
于 2011-03-15T17:53:16.493 回答
0

wget -O/dev/null -q --post-data='days:float=10' --user=adminuser --password=password http://localhost:PORT//Control_Panel/Database/main/manage_pack

如果你更喜欢 wget。

于 2012-04-14T19:20:58.100 回答