You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 22:37:07