Anaconda 存储库备份和恢复过程¶
本指南用于备份和恢复使用本地文件系统存储的 Anaconda Repository 实例。如果您的实例使用 Amazon S3 或任何其他存储提供商,请参阅他们关于备份和恢复程序的特定文档。
开始之前¶
这些说明适用于以下存储库:
/home/anaconda-server/repo
按照安装指南的建议安装在目录中。- 归
anaconda-server
用户所有。 - 使用存储目录
/opt/anaconda-server/package-storage
。 - 将配置文件存储在
/etc/anaconda-server
.
如果这些项目中的任何一项与您的实例不同,请相应地修改这些说明。
除非另有说明,否则请在以
anaconda-server
用户身份登录时运行所有 shell 命令。使用sudo
特权,anaconda-server
使用以下命令以用户身份登录:sudo su - anaconda-server
执行工作目录中的所有命令
/home/anaconda-server
:$ pwd /home/anaconda-server
备份¶
在开始备份过程之前,使用supervisorctl
以下命令关闭服务:
$ supervisorctl stop all
anaconda-server: stopped
$ supervisorctl status
anaconda-server STOPPED Jul 6 05:05 PM
创建一个$VERSION
环境变量并将其设置为当前安装的 Anaconda Repository 的版本:
$ VERSION=`conda list anaconda-server --json | python -c 'import sys, json; print json.load(sys.stdin)[0]["version"]'`
$ echo $VERSION
2.33.27
此版本字符串将用于所有备份文件名。
为文件添加时间戳也很有用,所以现在生成一个:
$ TIMESTAMP=`date +%Y-%m-%d`
$ echo $TIMESTAMP
2018-07-30
代码/二进制文件¶
使用已安装的代码、二进制文件和任何依赖项生成 tarfile 存档:
$ tar -cpsf anaconda-server-repo-$VERSION-$TIMESTAMP.tar --exclude var/run -C /home/anaconda-server repo/
$ sha1sum anaconda-server-repo-$VERSION-$TIMESTAMP.tar > anaconda-server-repo-$VERSION-$TIMESTAMP.tar.sha1
请注意,这也生成了一个 SHA1 校验和。此校验和将用于验证何时还原存档。
配置¶
仅当您将 Anaconda Repository 的配置存储在实例安装文件夹(通常为/home/anaconda-server/etc/
)之外的自定义位置时,才需要执行此步骤。
这些命令显示了如果配置存储在 .tar 文件中,如何生成 tarfile /etc/anaconda-server
。
生成带有 SHA1 校验和的 tarfile:
$ tar -cpsf anaconda-server-etc-$VERSION-$TIMESTAMP.tar /etc/anaconda-server
$ sha1sum anaconda-server-etc-$VERSION-$TIMESTAMP.tar > anaconda-server-etc-$VERSION-$TIMESTAMP.tar.sha1
存储¶
和以前一样,使用包存储位置的内容创建一个 tarfile 存档及其校验和:
$ tar -cpsf anaconda-server-package-storage-$VERSION-$TIMESTAMP.tar -C /opt/anaconda-server/ package-storage
$ sha1sum anaconda-server-package-storage-$VERSION-$TIMESTAMP.tar > anaconda-server-package-storage-$VERSION-$TIMESTAMP.tar.sha1
数据库¶
生成 Anaconda Repository 的 MongoDB 数据库的转储。我们建议您遵循 MongoDB 的备份和恢复指南 。本指南使用 MongoDB 工具:
$ mongodump --host=127.0.0.1 --port=27017 --archive=anaconda-server-mongodb-$VERSION-$TIMESTAMP.archive
$ sha1sum anaconda-server-mongodb-$VERSION-$TIMESTAMP.archive > anaconda-server-mongodb-$VERSION-$TIMESTAMP.archive.sha1
.bashrc ¶
如果您选择让 Anaconda Repository 安装程序更新.bashrc
用户的文件anaconda-server
,请备份它:
$ cp /home/anaconda-server/.bashrc anaconda-server-bashrc-$VERSION-$TIMESTAMP.sh
$ sha1sum anaconda-server-bashrc-$VERSION-$TIMESTAMP.sh > anaconda-server-bashrc-$VERSION-$TIMESTAMP.sh.sha1
恢复¶
开始之前¶
验证还原环境是否满足Anaconda Repository安装指南中列出的要求 。你会需要:
- 已安装 MongoDB(任何受支持的版本)
- 一个用户帐户(通常
anaconda-server
) /opt/anaconda-server/package-storage
Anaconda Repository 用户帐户拥有的存储目录(通常为)。仅当您使用本地文件系统作为存储后端时才需要这样做。
以
anaconda-server
用户身份登录时运行所有 shell 命令,就像备份 Anaconda Repository 时所做的那样。使用sudo
特权,anaconda-server
使用以下命令以用户身份登录:sudo su - anaconda-server
执行工作目录中的所有命令
/home/anaconda-server
。
验证校验和¶
验证备份文件的完整性:
$ sha1sum --check *.sha1
anaconda-server-bashrc-2.33.27-2018-07-30.sh: OK
anaconda-server-mongodb-2.33.27-2018-07-30.archive: OK
anaconda-server-package-storage-2.33.27-2018-07-30.tar: OK
anaconda-server-repo-2.33.27-2018-07-30.tar: OK
.bashrc ¶
如果您备份了.bashrc
用户的文件,请将其anaconda-server
恢复:
cp anaconda-server-bashrc-$VERSION-$TIMESTAMP.sh /home/anaconda-server/.bashrc
恢复此文件后,注销并anaconda-server
重新登录以使更改生效。
数据库¶
如果您遵循 Anaconda Repository
Installation Guide,MongoDB 已启动并正在运行,您可以使用它mongorestore
来恢复数据库存档:
mongorestore --host=127.0.0.1 --port=27017 --db=binstar --archive=anaconda-server-mongodb-$VERSION-$TIMESTAMP.archive
存储¶
假设存储目录是/opt/anaconda-server/package-storage
,使用以下命令恢复它:
tar -xpsf anaconda-server-package-storage-$VERSION-$TIMESTAMP.tar -C /opt/anaconda-server/
代码/二进制文件¶
恢复代码和二进制文件:
tar -xpsf anaconda-server-repo-$VERSION-$TIMESTAMP.tar -C /home/anaconda-server
恢复supervisord
配置:
repo/bin/anaconda-server-install-supervisord-config.sh
服务器现在应该已启动并正在运行。检查状态supervisorctl
:
$ repo/bin/supervisorctl status
anaconda-server RUNNING pid 8446, uptime 0:03:18