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-storageAnaconda 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