从cfs:gridfs迁移到cfs:s3

托比

我认为在流星项目中,有理由考虑从gridfs后端CollectionFS迁移迁移s3

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

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

我现在的想法是:

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

听起来不错吗?

肺泡

我就是这样做的!

您基本上是对的,这就是我的做法。迁移是一个非常简单的过程。我已经从GridFS转到了S3。

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

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-已存储

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章