如何使用minio-js恢复MinIO服务器开启版本控制存储桶的指定文件版本?
能否用minio-js恢复MinIO存储桶的特定文件版本?
可以用minio-js客户端恢复启用版本控制的存储桶中的特定文件版本,本质上是通过复制目标版本到当前版本的方式实现(和Web控制台的恢复逻辑一致),因为MinIO的版本恢复核心就是将指定版本设为最新版本。
具体实现步骤
- 先通过
listObjectVersions方法获取目标文件的所有版本信息,定位到需要恢复的版本对应的versionId - 调用
copyObject方法,将该版本的对象复制到同一路径,同时指定源对象的versionId,即可将该版本设为当前最新版本,完成恢复
示例代码
const Minio = require('minio'); // 初始化MinIO客户端 const client = new Minio.Client({ endPoint: 'your-minio-endpoint', port: 9000, useSSL: false, accessKey: 'your-access-key', secretKey: 'your-secret-key' }); // 恢复指定文件版本的异步函数 async function restoreObjectVersion(bucketName, objectName, targetVersionId) { try { // 复制指定版本到当前路径,覆盖为最新版本 await client.copyObject( bucketName, objectName, `${bucketName}/${objectName}?versionId=${targetVersionId}` ); console.log(`文件 ${objectName} 的版本 ${targetVersionId} 已成功恢复`); } catch (err) { console.error('恢复操作失败:', err); } } // 调用示例 restoreObjectVersion('my-bucket', 'documents/report.pdf', 'abc123xyz');
注意事项
- 确保操作的MinIO账号拥有
s3:PutObject和s3:GetObjectVersion权限 - 如果存储桶开启了对象锁定(Object Lock),需确认目标版本未处于不可修改的锁定状态,否则无法完成恢复
内容的提问来源于stack exchange,提问作者Roger
相关产品推荐
相关产品推荐

