(v5.5.7 迁移)二进制文件迁移
二进制文件迁移
迁移程序
3
估算受影响项目的数量
# Overleaf 工具包用户:
$ 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 工具包用户:
$ 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 工具包用户:
$ 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"{"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
开始项目文件备份...
已加载全局 blobs:0
处理中未删除的项目...
已处理 1 个项目,耗时 0s
已完成更新活动项目
处理中已删除的项目...
集合 deletedProjects 似乎是空的。
已完成更新已删除的项目
日志文件将如下所示(使用脚本打印的路径):
Done.
Done.$ 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
# 我们假设您使用的是 /var/lib/overleaf 中的默认绑定挂载
# 旧版 docker-compose.yml 用户:
$ 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 的绑定挂载。
将迁移阶段推进到 2离线迁移
在线迁移
清理遗留的二进制文件数据
故障排除
$ docker cp sharelatex:/var/log/overleaf/file-migration-<timestamp>.log .
查找损坏的文件树
最后更新于