ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

如何用 Rclone 把 WeKan 附件从 MongoDB GridFS 迁移到 MinIO 云存储?

如何用 Rclone 把 WeKan 附件从 MongoDB GridFS 迁移到 MinIO 云存储? 如何用 Rclone 把 WeKan 附件从 MongoDB GridFS 迁移到 MinIO 云存储【免费下载链接】wekanThe Open Source kanban, built with Meteor. GitHub issues/PRs are only for FLOSS Developers, not for support, support is at https://wekan.fi/commercial-support/ . PR source translation to imports/i18n/data/en.i18n.json, other translations at https://app.transifex.com/wekan/wekan项目地址: https://gitcode.com/GitHub_Trending/we/wekanWeKan 会把卡片附件、用户头像等存进存储后端旧版本常落在 MongoDB GridFS 中。附件一多数据库体积和备份都会变慢。用 Rclone 可以把 MinIOS3 兼容的对象存储挂载成 WeKan 的文件系统目录再用 WeKan 管理面板的迁移按钮把 GridFS 里的附件搬到 MinIO 上最后用rclone ls核对结果。本文给出 Docker 与 Snap 两种部署方式下的连续操作路径。说明Rclone 文档里提到管理面板中专门的 S3 按钮当时还不能直接用所以这里走把 MinIO 挂载为文件系统 Move all attachments to filesystem 按钮的路径较新版本的 WeKan 管理面板 Attachments 页已提供直接的 S3/MinIO 存储面板见文末替代方式。准备条件开始迁移前确认以下几项都已具备WeKan 正在运行且为Docker或Snap部署本文分别给出两条挂载命令。服务器上已安装Rclone工具。有一台运行中的MinIO服务器并已创建好 bucket、access key、secret key。如需创建 bucket 和密钥准备 MinIO 提供的mc客户端。1. 配置 Rclone 指向 MinIO先用rclone config交互式创建配置配置文件位于/root/.config/rclone/rclone.conf。Rclone 在 S3 提供商里提供了 MinIO 这一项。核心是下面这个[minio]段[minio] type s3 provider Minio access_key_id ACCESS-KEY-HERE secret_access_key SECRET-KEY-HERE endpoint http://192.168.0.100:9000 acl private需要替换的地方ACCESS-KEY-HERE、SECRET-KEY-HERE换成你在 MinIO 创建的真实密钥endpoint换成你的 MinIO 地址文档示例用http://192.168.0.100:9000。文档示例中另有一个[aws]段含region eu-north-1等那是针对真实 AWS S3 的迁移到 MinIO 时用不到。配置完成后用下面命令验证 Rclone 能否列出该远端能正常返回说明连接无误rclone ls minio:2. 启动 MinIO 服务器如果还没有如果 MinIO 还没起按文档示例启动服务器文件存放在/home/wekan/minio/data控制台监听:9001MINIO_ROOT_USERadmin MINIO_ROOT_PASSWORDpassword ./minio server /home/wekan/minio/data --console-address :9001admin/password是文档示例的根用户名与密码请按实际环境替换。然后创建 bucket文档示例为wekan、access key、secret key并用 mc 命令把它连接起来mc config host add wekan http://192.168.0.100:9000 ACCESS-KEY-HERE SECRET-KEY-HERE这里的http://192.168.0.100:9000与上一节 rclone.conf 里的endpoint保持一致两个ACCESS-KEY-HERE/SECRET-KEY-HERE同样替换为你的真实密钥。3. 用 Rclone 把 MinIO 挂载为 WeKan 的附件目录Rclone 的mount命令会一直在前台运行并打印相关日志它不会自动转成后台守护进程所以要在一个常驻的终端里保持它运行。挂载前切到 rootsudo su按你的部署方式选其一Docker主路径—— 挂载到 WeKan 附件卷在宿主机上的_data目录rclone mount minio:wekan/files /var/lib/docker/volumes/wekan_wekan-files/_data --vfs-cache-mode minimal对应的docker-compose.yml需要设置WRITABLE_PATH/data这样 WeKan 写入/data/files的文件就会经过这个 Rclone 挂载点落到 MinIO。可先用下面命令确认卷名sudo ls /var/lib/docker/volumes/文档示例会列出wekan_wekan-db-dump、wekan_wekan-db、wekan_wekan-files三个卷其中wekan_wekan-files就是附件所在卷。Snap可选分支—— 挂载到 Snap 的公共 files 目录rclone mount minio:wekan/files /var/snap/wekan/common/files --vfs-cache-mode minimal如果用的是 Bundle 或源码方式运行 WeKan则按文档说法设置WRITABLE_PATH与 Docker 示例一致即可再挂载到对应的可写目录。挂载过程中终端可能出现这类日志文档示例出现即属正常提示不是错误2022/12/27 10:22:13 NOTICE: S3 bucket wekan path files: Streaming uploads using chunk size 5Mi will have maximum file size of 48.828Gi4. 用管理面板把附件从 GridFS 移到文件系统保持上面的 Rclone 挂载不中断进入 WeKan 管理面板的Attachments附件页点击Move all attachmentsMove all attachments to filesystem按钮把附件从 MongoDB GridFS 移动到文件系统——也就是上一步挂载的 MinIO。注意文档提示有时顶部只显示Move all attachments这一个按钮有时还会多出按 board 迁移等更多按钮例如部分附件已经迁移过的情况。5. 验证迁移结果迁移完成后用 Rclone 列出 MinIO 上的文件来核对rclone ls minio:能列出对应文件说明附件已从 GridFS 落到 MinIO。MinIO 控制台里应能看到迁移后的文件以下为文档示例截图6. 迁移后数据库更小可再做备份附件移出 GridFS 后数据库里不再保存附件正文体积会明显变小。此时可以用mongodump生成一个更小的备份。Docker 下文档给出的流程是执行前会短暂停止wekan-app其中rm -rf /data/dump会先清掉容器内旧的 dump 目录再重新生成docker stop wekan-app docker exec wekan-db rm -rf /data/dump docker exec wekan-db mongodump -o /data/dump docker cp wekan-db:/data/dump . docker start wekan-app把dump目录复制到其它服务器或你的备份位置即可。限制与替代方式Rclone 的mount需要常驻前台进程进程一旦退出挂载点就会失效迁移期间要保持它运行。文档说明直接对接 MinIO 的不经过 Rclone的原生支持当时仍标记为 In ProgressMeteor-Files 使用的 AWS-SDK 尚不支持自定义 endpoint 如 MinIO所以本文以 Rclone 挂载为主路径。替代方式较新版本的 WeKan 在管理面板 Attachments 页直接提供S3/MinIO Storage面板含 bucket、凭据字段和 Test connection 按钮并且Move Files / Move attachment支持在 Filesystem、Meteor-Files GridFS 与 CloudS3/Azure/GCS之间从任意源迁到任意目标。如果你的版本已具备该面板可直接在其中配置 MinIO 的 bucket 与凭据、用 Move Files 从 GridFS 迁移而无需 Rclone 挂载。不同版本的面板能力存在差异以上按文档实际说明区分请按你所用版本的面板为准。【免费下载链接】wekanThe Open Source kanban, built with Meteor. GitHub issues/PRs are only for FLOSS Developers, not for support, support is at https://wekan.fi/commercial-support/ . PR source translation to imports/i18n/data/en.i18n.json, other translations at https://app.transifex.com/wekan/wekan项目地址: https://gitcode.com/GitHub_Trending/we/wekan创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表