首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从cfs:gridfs迁移到cfs:s3

从cfs:gridfs迁移到cfs:s3
EN

Stack Overflow用户
提问于 2015-11-10 20:52:08
回答 1查看 425关注 0票数 2

在一个流星项目中,我坚持认为,有理由将从gridfs移开作为CollectionFS的后端,转向s3

我想做的一件事是迁移当前使用gridfs集合存储的图像/文件。

以前有人尝试过吗?我找不到任何指南甚至建议。

我现在的想法是沿着;

  1. 创建一个由s3支持的新集合
  2. 迭代旧集合,将数据推到s3中
  3. 更新代码以指向新集合

这听起来像吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-19 15:05:58

我刚干的!

你基本上是对的,我就是这么做的。迁移是一个相当容易的过程。我从GridFS转到了S3。

1)通过添加new FS.Store.S3("store_name",{}),CollectionFS自动克隆旧存储区中现有文件的元数据,以供新存储。但是,这个新商店的所有文件大小都是零。

代码语言:javascript
复制
Images = new FS.Collection("images", {
    stores: [
        new FS.Store.S3("s3images", {}),
        new FS.Store.GridFS("images", {})
    ]
});

2)虽然这两个存储都已就位,但您需要使用这里引用的管道( https://github.com/CollectionFS/Meteor-CollectionFS/wiki/How-to:-Convert-a-file-already-stored )手动迁移内容。

代码语言:javascript
复制
if(Meteor.isServer) {
Images.find().forEach(function (fileObj) {
var readStream = fileObj.createReadStream('images');
var writeStream = fileObj.createWriteStream('s3images');
readStream.pipe(writeStream);
});
}

希望在此之后,您将看到您的新商店的文件大小符合旧的!

3)可选地,移除旧商店。如果两者都保留,则将插入的文件添加到这两个文件中,并将优先级赋予数组中的第一个存储区。

参考资料:https://github.com/CollectionFS/Meteor-CollectionFS/issues/747

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33639381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档