S3 への移行
この手順は v5.x 以降を対象としています。それ以前のバージョンでこのガイドに従う場合は、パス名では
overleaf の代わりに sharelatex を、環境変数では OVERLEAF_ の代わりに SHARELATEX_ プレフィックスを使用してください。v6 以降では、従来の user_files のコマンドは省略してください。ぜひご意見をお聞かせください! 移行したファイルの数、全体の容量、移行にかかった時間を共有していただける場合は、
ayaka-notes@outlook.com までメールでお知らせください。要件
- 接続先となる S3 互換のオブジェクトストレージ(選択肢については #s3-setup を参照)
- 既存データの移行に必要な空きディスク容量(現在のディスク上のサイズと同程度)
- 実際の移行を行うためのメンテナンス時間枠
- 復元できるよう、設定を含む完全なバックアップ
移行に必要なディスクサイズを見積もる
du を使用して現在のディスク使用量を計算できます:
history ディレクトリはすでに正しいレイアウトになっています。バインドマウントされたソースフォルダーから直接アップロードできるため、追加のディスク容量は必要ありません。
移行手順
ステップ 0: インスタンスをシャットダウンする
すべてのユーザーファイルとテンプレートファイルが確実に移行されるようにする必要があります。新しくアップロードされたファイルの取りこぼしを防ぐため、インスタンスをシャットダウンするのが最善です。 シャットダウンの手順については、一貫性のあるバックアップの実行に関するガイドを参照してください。ステップ 1: ディレクトリレイアウトを書き換える
S3 にアップロードするため、プロジェクトファイルのディレクトリレイアウトを書き換える必要があります。filestore のローカルストレージのディレクトリレイアウトは<project-id>_<file-id> で、S3 のディレクトリレイアウトは <project-id>/<file-id> です。
以下では、新しいディレクトリレイアウトのファイルを保存するために /srv/overleaf-s3-migration を使用します。/srv/overleaf-bind-mount は /var/lib/overleaf にマウントされているホストディレクトリに置き換えてください。コピーコマンドは、これらのディレクトリの読み書き権限を持つホスト上で実行してください。コンテナは停止したままにしておきます。
tar を使用してレイアウトを書き換えることができます:
ステップ 2: ファイルをアップロードする
好みに応じて、minio mc S3 クライアントまたは aws cli を使用して、S3 互換のオブジェクトストレージにファイルをアップロードできます。 aws clioverleaf-user-files、overleaf-template-files、overleaf-project-blobs、overleaf-chunksは、ご利用の S3 バケット名に置き換えてください。- また、
/srv/overleaf-bind-mountは/var/lib/overleafのバインドマウントのローカルパスに置き換えてください。デフォルトでは、docker-compose.yml によるデプロイでは~/overleaf_data、Toolkit を使用する場合は<toolkit-checkout>/data/overleafです。
ステップ 3: S3 を参照するようにしてインスタンスを起動する
S3 セットアップガイドの Overview of variables セクションで説明されているとおり、S3 関連のすべての変数を設定に追加します。 データディレクトリのバインドマウントは残しておいてください。S3 に移行されない Zotero や Mendeley の暗号化キーが含まれている場合があります。一時ファイル用のスクラッチディスクのバインドマウントはそのまま残しておいてください。
- エディターでバイナリファイルをプレビューできる
- 画像を含む PDF をコンパイルできる
- 新しいファイルをアップロードできる
ロールバック
手順を逆にたどることで、移行を正常にロールバックできます:- インスタンスをシャットダウンする
- ソースと宛先の順序を入れ替えてファイルをミラーリングで戻す
- 逆の
transformを使って、新しいファイルをローカルディレクトリに書き戻す - 古い設定でインスタンスを再起動する
1 つ目の transform は最上位のフォルダーを取り除きます。2 つ目の transform はディレクトリレイアウトをフラットなものに変更します。ワイルドカードにより、親(プロジェクト)フォルダーではなくファイルのみが展開されるようになります。

