awsS3 迁移

S3 迁移

circle-info

这些说明适用于 v5.x 及更高版本。如果您按照本指南为早期版本操作,请使用 sharelatex 而不是 overleaf 在路径名中以及 SHARELATEX_ 前缀而不是 OVERLEAF_ 作为环境变量。

circle-exclamation
circle-check

本指南将引导您完成从磁盘存储到兼容 S3 的对象存储的迁移。它引用了介绍文档中关于 S3 设置.

  • 与之通信的兼容 S3 对象存储,请参阅 S3 以获取选项

  • 用于迁移现有数据的可用空闲磁盘空间,约为当前磁盘上的大小

  • 用于执行实际迁移的维护窗口

  • 包含配置的完整备份,以便能够从中恢复

估算迁移所需的磁盘大小

我们可以使用 du 来计算当前磁盘使用情况:

docker exec sharelatex \
  du --human-readable --max-depth=0 /var/lib/overleaf/data/user_files

docker exec sharelatex \
  du --human-readable --max-depth=0 /var/lib/overleaf/data/template_files

如果当前服务器上没有足够的磁盘空间,请尝试向服务器附加另一个磁盘。

circle-info

history 目录已经具有正确的布局。您可以直接从 bind-mount 的源文件夹上传,这不需要任何额外的磁盘空间。

迁移步骤

步骤 0 关闭实例

我们需要确保所有用户/模板文件都将被迁移。最好关闭实例以避免遗漏新上传的文件。

请参阅我们关于在关机程序中执行一致性备份的指南。

步骤 1 重写目录布局

我们需要重写项目文件的目录布局以便将它们上传到 S3。filestore 中本地存储的目录布局是 <project-id>_<file-id> 而在 S3 中的目录布局是 <project-id>/<file-id>.

在下文中, /srv/overleaf-s3-migration 用于以新目录布局存放文件。

我们可以利用 tar 来重写布局:

步骤 2 上传文件

根据您的偏好,您可以使用 minio mc S3 客户端或 aws cli 将文件上传到兼容 S3 的对象存储。

aws cli

circle-info
  • 在此您应替换 overleaf-user-files, overleaf-template-files, overleaf-project-blobsoverleaf-chunks 为您的 S3 存储桶名称。

  • 还要替换 /srv/overleaf-bind-mount 为本地路径,即 /var/lib/overleaf 的 bind-mount。默认情况下, ~/overleaf_data 在 docker-compose.yml 部署中为 <toolkit-checkout>/data/overleaf 当使用 Toolkit 时为。

minio mc

这里我们使用服务器别名 “s3”,您可能选择了另一个名称。

步骤 3 启动指向 S3 的实例

将所有与 S3 相关的变量添加到您的配置中,详见 变量概述 部分在 S3arrow-up-right 设置指南中。

对于 Docker Compose 部署,您也可以从 volumes 部分中移除数据目录的 bind-mount。

您现在可以启动实例并验证迁移:

  • 可以在编辑器中预览二进制文件

  • 可以编译包含图片的 PDF

  • 可以上传新文件

回滚

您可以通过反向执行步骤优雅地回滚迁移:

  1. 关闭实例

  2. 通过翻转源/目标的顺序将文件镜像回去

  3. 使用逆向 transform

  4. 将新文件写回到本地目录

circle-info

--wildcards '*/*/*/*/zip' ,

最后更新于