从cfs:gridfs迁移到cfs:s3

时间:2015-11-10 20:52:09

标签: meteor amazon-s3 data-migration collectionfs

在一个流星项目中,我坚持认为有必要将gridfs作为后端移至CollectionFS并转向s3

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

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

我现在的想法是:

  1. 创建由s3支持的新集合
  2. 迭代旧数据集将数据推送到s3
  3. 更新代码以指向新收藏
  4. 这听起来不错吗?

1 个答案:

答案 0 :(得分:4)

我刚刚做到了!

你基本上是对的,在这里我是怎么做到的。迁移是一个非常简单的过程。我已从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-already-stored引用的管道手动迁移内容。

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