(v5.5.7 マイグレーション) バイナリファイルの移行
バイナリファイルの移行
移行手順
3
影響を受けるプロジェクト数を見積もる
# Overleaf Toolkit ユーザー:
$ bin/docker-compose exec sharelatex /bin/bash -c "source /etc/overleaf/env.sh && source /etc/container_environment.sh && cd /overleaf/services/history-v1 && /sbin/setuser www-data node storage/scripts/back_fill_file_hash.mjs --report"
# レガシーな docker-compose.yml ユーザー:
$ docker compose exec sharelatex /bin/bash -c "source /etc/overleaf/env.sh && source /etc/container_environment.sh && cd /overleaf/services/history-v1 && /sbin/setuser www-data node storage/scripts/back_fill_file_hash.mjs --report"現在のステータス:
- プロジェクトの総数: 10
- 削除されたプロジェクトの総数: 5
進捗を推定するために1000プロジェクトをサンプリングしています...
プロジェクトのサンプル統計:
- サンプルされたプロジェクト: 9(全プロジェクトの90%)
- ハッシュがすべて揃っているサンプルプロジェクト: 5
- ハッシュのバックフィルが必要なプロジェクトの割合: 44%(推定)
- サンプルプロジェクトには完全なプロジェクト履歴システムと照合する必要があるファイルが11個あります。
- サンプルプロジェクトには完全なプロジェクト履歴システムにアップロードする必要があるファイルが3個あります(全ファイルの約27%と推定)。
削除されたプロジェクトのサンプル統計:
- サンプルされた削除プロジェクト: 4(全削除プロジェクトの80%)
- ハッシュがすべて揃っているサンプル削除プロジェクト: 3
- ハッシュのバックフィルが必要な削除プロジェクトの割合: 25%(推定)
- サンプル削除プロジェクトには完全なプロジェクト履歴システムと照合する必要があるファイルが2個あります。
- サンプル削除プロジェクトには完全なプロジェクト履歴システムにアップロードする必要があるファイルが1個あります(全ファイルの約50%と推定)。4
プロジェクト履歴キューをフラッシュする
# Overleaf Toolkit ユーザー:
$ bin/docker-compose exec sharelatex /overleaf/bin/flush-history-queues
# レガシーな docker-compose.yml ユーザー:
$ docker compose exec sharelatex /overleaf/bin/flush-history-queues発見されたプロジェクト {"project_ids":0,"limit":100000,"ts":"2025-09-01T10:35:33.353Z"}
合計 {"succeededProjects":0,"failedProjects":0}8
移行スクリプトを実行する
# Overleaf Toolkit ユーザー:
$ bin/docker-compose exec sharelatex /bin/bash -c "source /etc/overleaf/env.sh && source /etc/container_environment.sh && cd /overleaf/services/history-v1 && /sbin/setuser www-data node storage/scripts/back_fill_file_hash.mjs --all"
# レガシーな docker-compose.yml ユーザー:
$ docker compose exec sharelatex /bin/bash -c "source /etc/overleaf/env.sh && source /etc/container_environment.sh && cd /overleaf/services/history-v1 && /sbin/setuser www-data node storage/scripts/back_fill_file_hash.mjs --all"UV_THREADPOOL_SIZE=16 を設定してください
{"name":"default","hostname":"c25e9faaeb53","pid":971,"level":30,"backend":"fs","msg":"Loading backend","time":"2025-07-25T15:00:58.166Z","v":0}
/var/log/overleaf/file-migration-2025-07-25T15_00_58_199Z.log にログを書き込んでいます
プロジェクトファイルのバックアップを開始しています...
読み込まれたグローバルブロブ: 0
削除されていないプロジェクトを処理しています...
1 プロジェクトを処理しました、経過時間 0s
ライブプロジェクトの更新が完了しました
削除されたプロジェクトを処理しています...
コレクション deletedProjects は空のようです。
削除されたプロジェクトの更新が完了しました
Done.
Done.$ docker cp sharelatex:/var/log/overleaf/file-migration-2025-07-25T15_00_58_199Z.log .
$ cat file-migration-2025-07-25T15_00_58_199Z.log
{"name":"file-migration","hostname":"c25e9faaeb53","pid":971,"level":30,"end":"68839a8f577b9f009d947b27 (2025-07-25T14:54:07.000Z)","msg":"actually completed batch","time":"2025-07-25T15:00:58.379Z","v":0}
{"name":"file-migration","hostname":"c25e9faaeb53","pid":971,"level":30,"time":"2025-07-25T15:00:58.383Z","LOGGING_IDENTIFIER":"4effa2000000000000000000","projects":1,"blobs":6,"filesWithHash":5,"filesWithoutHash":2,"filesDuplicated":0,"filesRetries":0,"filesFailed":0,"fileTreeUpdated":0,"badFileTrees":0,"globalBlobsCount":0,"globalBlobsEgress":0,"projectDeleted":0,"projectHardDeleted":0,"fileHardDeleted":0,"mongoUpdates":1,"readFromGCSCount":7,"readFromGCSIngress":28532,"writeToGCSCount":5,"writeToGCSEgress":300,"readFromGCSThroughputMiBPerSecond":0.14925639825786063,"eventLoop":{"idle":48.277844,"active":381.53244699971054,"utilization":0.8876763888372498},"diff":{"eventLoop":{"idle":48.223536,"active":134.04030200059555,"utilization":0.7354190687027976},"projects":1,"blobs":6,"filesWithHash":5,"filesWithoutHash":2,"filesDuplicated":0,"filesRetries":0,"filesFailed":0,"fileTreeUpdated":0,"badFileTrees":0,"globalBlobsCount":0,"globalBlobsEgress":0,"projectDeleted":0,"projectHardDeleted":0,"fileHardDeleted":0,"mongoUpdates":1,"readFromGCSCount":7,"readFromGCSIngress":28532,"writeToGCSCount":5,"writeToGCSEgress":300,"readFromGCSThroughputMiBPerSecond":0.14925639825786063},"deferredBatches":[],"msg":"file-migration stats","v":0}10
アプリケーションから古いファイルをアクセス不可にする
# ツールキットユーザー:
$ bin/docker-compose run --rm --entrypoint mv sharelatex --no-clobber --verbose /var/lib/overleaf/data/user_files /var/lib/overleaf/data/old_user_files
# レガシーな docker-compose.yml ユーザー:
# /var/lib/overleaf のデフォルトのバインドマウントを使用していると想定しています
$ docker compose run --rm --entrypoint mv sharelatex --no-clobber --verbose /var/lib/overleaf/data/user_files /var/lib/overleaf/data/old_user_files
# 選択的なバインドマウントを使用している場合は、コンテナ内の /var/lib/overleaf/data/user_files のバインドマウントを単に削除できます。オフライン移行
オンライン移行
レガシーバイナリファイルデータのクリーンアップ
トラブルシューティング
欠落ファイル
壊れたファイルツリーの検出
最終更新