在我认为的一个流星项目中,有理由考虑从gridfs
后端CollectionFS
转移到s3
.
我想做的一件事是迁移当前使用gridfs
集合存储的图像/文件。
有没有人尝试过这个?我找不到任何指南甚至建议。
我现在的想法是这样的;
- 创建一个由 s3 支持的新集合
- 迭代旧集合,将数据推送到 s3
- 更新代码以指向新集合
这听起来不错?
在我认为的一个流星项目中,有理由考虑从gridfs
后端CollectionFS
转移到s3
.
我想做的一件事是迁移当前使用gridfs
集合存储的图像/文件。
有没有人尝试过这个?我找不到任何指南甚至建议。
我现在的想法是这样的;
这听起来不错?
我刚做了这个!
你基本上是对的,这就是我的做法。迁移是一个非常简单的过程。我已经从 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