bin/backup脚本:关于bin/repozo的合理默认值
collective.recipe.backup的Python项目详细描述
构建的简单Zope备份/还原方法
内容
- 构建的轻松zope备份/恢复方法
- 简介
- 兼容性
- 开发
- 示例用法
- 备份数据
- 未备份的数据
- 备份是否已备份?
- 备份
- 完整备份
- 快照
- zipbackups
- 还原
- 已创建脚本的名称
- 支持的选项
- cron作业集成
- 高级用法:多个data.fs文件
- blob存储
- rsync
- 备用还原源
- 赞助
简介
这个配方主要是在 你的Zope建立起来了。它要求此脚本已经生成 可用。如果不是这样,你会得到这样的错误 当您运行其中一个脚本时: bin/repozo:没有这样的文件或 目录 。当你在三楼或者 在plone 4上,使用 plone.recipe.zeoserver 。如果这是 不是这样,获得 bin/repozo 脚本的最简单方法是 在 build out.cfg中添加一个新的部分(不要忘记在 部件 指令: 阿尔法。1。阿尔法。bin/repozo 是一个zope脚本,用于备份 数据。 查找设置可能会导致哭泣。你得选一个 存放备份的目录。这个配方提供了 合理的 默认值 用于常见备份任务。使备份成为 蛋糕很重要!
- bin/backup 进行增量备份。
- bin/full backup 总是在同一目录中进行完整备份 正常备份。您可以通过设置 启用完整备份 选项为真。
- bin/restore 还原由备份或 完整备份脚本。
- bin/快照备份 定期备份。在网站发生重大变化之前使用得心应手。
- bin/SnapshotRestore 还原最新的完整快照备份。
- bin/zip backup 进行zip备份。这将调整data.fs和 blobstorage,方便将生产日期复制到您的位置 机器,尤指有许多文件的blobstorage。注意 data.fs和blobstorage(或其他存储)是 而不是 的组合 在一个文件中;您需要下载多个文件。启用此 使用"启用Zipbackup"选项编写脚本。
- bin/ziprestore 恢复最新的zipbackup。
兼容性
配方使用Python2.6、2.7和3.6进行测试。 在plone术语中,它在plone 4和plone 5上工作良好。
请注意,与 plone.recipe.zope2instance 的集成没有在python 3.6上进行测试。 此配方及其 mailinglogger 依赖项还没有与python 3兼容的版本。
开发
-
代码库:https://github.com/collective/collective.recipe.backup rel="nofollow">https://github.com/collective/collective.recipe.backup
-
问题跟踪者:
https://github.com/collective/collective.recipe.backup/issues
-
很明显的修复,比如修复错别字,对master来说是很好的。
对于较大的更改或如果您不确定,请创建分支或拉取请求。
-
代码附带一个buildout.cfg。请启动
构建并运行创建的
bin/test
以查看测试是否仍然
通过。如果您添加了代码,请尝试添加测试。
-
这个包的详细描述(如pypi所示),用于
包含一个包含大量测试代码的大文件,其中显示了如何使用
食谱。这个长得太大了,所以我们把它忘了。可能是
如果你想知道一些
选项有。参见src/collective/recipe/backup/tests/*.txt。
-
我们在特拉维斯身上做了测试:
https://travis ci.org/collective/collective.recipe.backup
-
向https://community.plone.org或向
毛里特斯范里斯
示例用法
使用此配方的最简单方法是在buildout.cfg中添加一个部分,如下所示:
[buildout] parts = backup [backup] recipe = collective.recipe.backup
你可以设置很多额外的选项,但是菜谱作者喜欢 认为他们已经创建了正常的默认值,所以这一行声明 配方名称在大多数情况下应该足够了。
运行构建将添加 备份 , 完整备份 , 快照备份 , zipbackup , 还原 , 快照还原 并将脚本存储到构建的 bin/ 目录。 有些默认情况下不添加,其他可以关闭。
已备份的数据
这个配方备份哪些数据?
- zope对象数据库(zodb)文件存储,默认位于 var/filestorage/data.fs
- 可能还有其他文件存储,请参见 附加文件存储 选项。
- blobstorage(从2.0版开始)如果您的构建使用它,则 默认值位于 var/blobstorage
未备份的数据
这个配方不备份哪些数据?当然,其他的一切, 但具体来说:
- 存储在relstorage中的数据将不会备份。(你可以 仍然使用这个方法来备份文件系统blobstorage, 可能是使用 only_blobs 选项。)
- 存储在sql中的其他数据(可能是通过sqlalchemy存储的)将 备份。
- 它不会为整个构建目录创建备份。
注意,默认情况下,备份是在 var 目录中创建的 如果你不小心把整个建筑都拆了, 也会丢失备份。使用 location 用于指定备份位置的选项,例如 用户的主目录。你也应该安排拷贝 备份到不同的机器/国家/大陆/行星。
备份
调用bin/backup会导致正常的增量repozo备份 这将创建 var/backups 中 data.fs 的备份。当你 具有默认备份到的blob存储 变量/blobstoragebackups
完整备份
调用 bin/full backup 将导致正常的完全repozo备份 这将创建 var/backups 中 data.fs 的备份。当你 具有默认备份到的blob存储 变量/blobstoragebackups 。提供此脚本是为了 为完全备份和增量备份设置不同的cron作业。你可以 希望每天执行增量备份,每周执行完整备份。 现在你可以!
由于版本4.0,默认情况下不创建fullbackup脚本。 通过将enable-fullbackup设置为true来启用它
你通常应该定期做一次,比如说一周一次, 从zope data.fs 中删除未使用的对象。下一次 调用bin/backup 时,将进行完整的新备份,因为 增量备份不再可能。这是标准的 行为。所以你可能不需要 bin/fullbackup 脚本。
快照
在更新生产服务器之前快速备份是一个很好的方法 想法。但你可能不想干扰常规备份 政体。为此, bin/snapshotbackup 非常好。它放置了一个 默认情况下,完全备份在 var/snapshotbackups中
ZipBackups
用于快速获取生产数据库的当前状态,以便 可以下载到你的开发笔记本上,你想要一个完整的和拉链 备份。拉链部分对blobstorage很重要,因为你 不想使用 scp 递归地复制所有这些blob 文件:下载一个tarball更快。
您可以为此使用 bin/zipbackup 脚本。这个脚本 覆盖一些设置,忽略构建中设置的内容 配置部分:
- gzip 显式地为文件存储打开(这是 已经是默认值,但我们会确保)。
- 存档blob 已打开。
- keep 设置为1,以避免保留大量不必要的备份。
- 保留blob天数被忽略,因为它是完全备份。
默认情况下,脚本将完整备份放在 var/zipbackups中 它将blobstorage的tarball放入 var/blobstoragezips
默认情况下不创建此脚本。 您可以通过将enable_zipbackup 选项设置为true来启用它。 此外,如果 backup blob 为false,则脚本是无用的,因此即使您显式启用它们,我们也不会创建它们。
还原
调用 bin/restore 恢复最新的正常增量 repozo 备份并还原blobstorage(如果有)。
您可以使用 bin/snapshotrestore 还原最新的快照备份。
您可以使用 bin/ziprestore 还原zipbackup
您还可以从某个日期恢复备份。就给我一个约会的理由。 根据:规范通知UTC(非本地)时间。 格式为:yyyy-mm-dd[-hh[-mm[-ss]] 。 举个简单的例子,恢复到1972年12月25日:
bin/restore 1972-12-25
或者到同一天,在1:03秒之后
bin/restore 1972-12-25-01-02-03
从版本2.3开始,这也适用于还原blob。 我们在指定日期或之前从第一个备份还原目录。 (注意,在版本4.0之前,我们从指定日期之后的第一次备份还原了目录, 这应该是好的,只要你没有做一个数据库包之间的。)
从版本2.0开始,还原脚本在 启动还原,因为这是一个潜在的危险命令。 ("哦,我已经恢复了现场,但我想恢复测试 site。")您需要显式键入"yes":
This will replace the filestorage (Data.fs). This will replace the blobstorage. Are you sure? (yes/No)?
请注意,对于大型文件存储和blobstorage 恢复可能需要很长时间。 您应该执行测试还原并检查它需要多长时间。 秒?几分钟?小时? 这个时间可以接受吗?还是应该采取其他措施?
已创建脚本的名称
备份部件通常称为 [backup] ,导致 bin/backup 和 bin/snapshotbackup 。你应该说出你的角色吗 另外,脚本名和创建的 var/ 目录(自1.2版起):
[buildout] parts = plonebackup [plonebackup] recipe = collective.recipe.backup enable_zipbackup = true
构建片段将创建以下脚本:
bin/plonebackup bin/plonebackup-full bin/plonebackup-zip bin/plonebackup-snapshot bin/plonebackup-restore bin/plonebackup-ziprestore bin/plonebackup-snapshotrestore
支持的选项
配方支持以下选项,这些选项都不需要 违约。最常见的更改是 位置 和 blobbackuplocation ,因为它们允许您将备份放在 一些系统范围的目录,如 /var/zopebackups/instancename/ 和 /var/zopebackups/instancename blobs/
< DL>使用 --quick选项调用 repozo 。这个选项是 在2.19版中引入了 collective.recipe.backup 默认值为真 。因为所有的支票和 默认的非快速行为会读取大量数据,即 是实际文件存储的三到四倍。用 快速选择它可能很容易只是几千字节。 理论上,快速选择不那么安全,但看起来 只有当有人在 存储库或删除一个 .deltafs 文件。
快速选项仅影响创建的bin/backup 脚本。它对快照或还原脚本没有影响。
repozo帮助说明了这个选项:"通过md5校验和验证 只写入最后一个增量。这显著降低了 磁盘I/O以(理论上)不一致为代价。这是一个 确定完整备份是否为 必要。"
使用各种选项构建代码片段的示例如下:
[backup] recipe = collective.recipe.backup location = ${buildout:directory}/myproject keep = 2 datafs = subfolder/myproject.fs full = true debug = true snapshotlocation = snap/my gzip = false enable_snapshotrestore = true pre_command = echo 'Can I have a backup?' post_command = echo 'Thanks a lot for the backup.' echo 'We are done.'
目录或文件中的路径可以使用相对路径,并且 ~ (home dir)和 $backup风格的环境变量是 展开。
cron作业集成
bin/backup 当然是放入cronjob而不是整个 行。但你不想让"信息"级别的日志记录 去吧,就像你在邮箱里一样。在cronjob中,只需添加 -q 或 --quiet 和 bin/backup 将关闭,除非出现问题。 如果在buildout中设置为true,此选项将忽略调试变量。
说到cron jobs?如果您想处理 在你的构建中的cronjobs。例如:
[backupcronjob] recipe = z3c.recipe.usercrontab times = 0 12 * * * command = ${buildout:directory}/bin/backup
高级用法:多个data.fs文件
有时,一个文件存储被拆分为多个文件。最常见的原因是 有一个常规的 data.fs 和一个 catalog.fs 目录,其中包含 门户目录 。附加的文件存储支持此功能 选项:
[repozo] recipe = zc.recipe.egg eggs = ZODB # or this for an older version: # eggs = ZODB3 scripts = repozo dependent-scripts = true0
这意味着,对于标准的data.fs,bin/backup 脚本现在将备份三个文件存储:
[repozo] recipe = zc.recipe.egg eggs = ZODB # or this for an older version: # eggs = ZODB3 scripts = repozo dependent-scripts = true1
附加备份必须与 数据分开存储。fs 备份。这是通过附加文件名并创建额外的备份来完成的 这样命名的目录:
[repozo] recipe = zc.recipe.egg eggs = ZODB # or this for an older version: # eggs = ZODB3 scripts = repozo dependent-scripts = true2
各种备份一个接一个地进行。他们不能在 同时使用repozo。所以它们并不完全同步。"另一个" 首先备份数据库,因为目录中的一个小差异是 有点恼人,但另一方面用户可能会遇到真正的错误。
在 附加文件存储 选项中,可以定义不同的 使用此语法的文件存储:
[repozo] recipe = zc.recipe.egg eggs = ZODB # or this for an older version: # eggs = ZODB3 scripts = repozo dependent-scripts = true3
因此,如果希望对文件存储源路径进行更多控制,可以 显式地设置它,使用或不使用blobstorage路径。为了 例子:
[repozo] recipe = zc.recipe.egg eggs = ZODB # or this for an older version: # eggs = ZODB3 scripts = repozo dependent-scripts = true4
如果缺少datafs路径,则使用默认值 ( var/filestorage/storagename1.fs )。如果未指定 blobdir ,则这意味着不会为此备份blob 存储。注意,如果指定 blobdir 则必须指定 数据路径 以及。
注意 collective.recipe.filestorage 文件存储在稍微不同的位置,但是您可以明确地定义 配方中定义的所有 部分的文件存储和blobstorage的路径。 正在进行改进工作。
blob存储
在2.0版中添加。
我们可以备份blob存储。plone 4使用blob存储来存储 文件系统上的文件(二进制大对象)。在第三声中这是 可选的。使用时,当然应该备份。你 必须指定plone(或zope)所在的源blob_存储目录 存储它的blobs。如前所述,当我们不设置它时 具体来说,我们试图从其他部分获取位置,例如 plone.recipe.zope2instance 配方:
[repozo] recipe = zc.recipe.egg eggs = ZODB # or this for an older version: # eggs = ZODB3 scripts = repozo dependent-scripts = true5
如果需要,我们可以告诉buildout我们只想备份blob或 特别是不要想备份blob。使用指定 备份blob 和 仅备份blob 选项在 如果您想将其分为几个脚本:
[repozo] recipe = zc.recipe.egg eggs = ZODB # or this for an older version: # eggs = ZODB3 scripts = repozo dependent-scripts = true6
使用此设置,bin/filebackup现在只备份文件存储 并且 bin/blobbackup 只备份blobbstorage。
版本4.0中的新功能:您可能需要指定 blob_timestamps=true 。 然后我们创建不旋转的稳定目录。 例如: blobstorage.1972-12-25-01-02-03而不是 blobstorage.0
rsync
默认情况下,我们使用 rsync 创建备份。我们创建硬链接 使用此工具,可以节省磁盘空间并仍有增量备份。 这可能需要Unixy(Linux、Mac OS X)操作系统。 这是根据迈克·鲁贝尔的这篇文章: http://www.mikerubel.org/computers/rsync_snapshots/
我们还没有在windows上尝试过。报告是受欢迎的,但最好是 可能要设置备份部分中的use rsync=false选项。 然后我们简单地复制blobstorage目录。
其他还原源
在版本2.17中添加。
您可以从其他源还原。用例:首先生成 备份生产站点,然后转到测试或登台 服务器并恢复那里的生产数据。
在 备用恢复源选项中,您可以定义不同的 使用此选项的文件存储和blobstorage备份源目录 语法:
[repozo] recipe = zc.recipe.egg eggs = ZODB # or this for an older version: # eggs = ZODB3 scripts = repozo dependent-scripts = true7
存储名称t 与其他文件存储中的相同 选项,加上一个键 data (或 1 )用于标准 data.fs 也可以选择它的blobstorage。
结果是一个 bin/altrestore 脚本。
这对于具有单个文件存储和 blob存储:
[repozo] recipe = zc.recipe.egg eggs = ZODB # or this for an older version: # eggs = ZODB3 scripts = repozo dependent-scripts = true8
上述配置使用 repozo 从 标准的 /path/to/production/var/backups存储库 var/filestorage/data.fs 位置。它复制最新的 blobstorage备份自 /path/to/production/var/blobstoragebackups/ 到标准 变量/blobstorage 位置。
支持使用特定日期调用脚本,就像 正常还原脚本:
[repozo] recipe = zc.recipe.egg eggs = ZODB # or this for an older version: # eggs = ZODB3 scripts = repozo dependent-scripts = true9
如果您有其他文件存储,则如下所示:
[buildout] parts = backup [backup] recipe = collective.recipe.backup0
如果替代源与 标准文件存储、blobstorage和其他存储。为了 例如,当 替代恢复源 是 当有多余或丢失的键时,当 当密钥有额外或丢失的blobstorage时,密钥没有路径。
在配方的安装过程中,因此在运行 不检查源是否存在:您可能拥有 在其他服务器上备份,需要设置远程共享 或者手动复制数据。
注意,该脚本使用 archive blob 和 use rsync 选项 考虑到。因此,如果备用还原源包含blob 使用 archive blob=true进行的备份,您需要 altrestore 也使用此设置的脚本。