如何批量将被勒索软件加密的Google Drive文件恢复到上一历史版本
Google Drive批量回退未加密历史版本解决方案
前置注意事项
- 先确认要恢复的文件历史版本均在30天保留期内,超出保留期的版本无法通过任何方式恢复
- 操作前先选择3-5个文件做测试,确认回退的版本为未加密的正确版本后再批量操作,避免误操作丢失数据
- 建议先将所有相关文件的历史版本设置为永久保留,避免30天到期后版本被系统自动删除
现成可用脚本(Google Apps Script,无需本地部署)
该脚本为Drive社区通用成熟方案,个人账号可直接使用,无需额外开发,操作全程在浏览器内完成:
- 打开Google Apps Script平台,用你的Google Drive关联账号登录,新建空白项目
- 删除编辑器内默认代码,替换为如下代码:
// 功能1:批量开启文件版本永久保留,避免30天到期被删除 function keepAllRevisionsForever() { // 请替换为你实际遭遇勒索加密的日期,格式为YYYY-MM-DD,仅处理该日期后被修改的文件 const encryptDate = '2024-01-01'; const files = DriveApp.searchFiles(`modifiedDate > '${encryptDate}' and trashed = false`); let count = 0; while (files.hasNext()) { const file = files.next(); try { Drive.Files.patch({ keepRevisionForever: true }, file.getId()); count++; } catch (e) { console.log(`处理文件失败:${file.getName()},错误:${e.message}`); } } console.log(`共完成${count}个文件的版本永久保留设置`); } // 功能2:批量回退文件到上一个未加密历史版本 function batchRestorePreviousVersions() { // 同上方配置,替换为实际加密日期 const encryptDate = '2024-01-01'; const files = DriveApp.searchFiles(`modifiedDate > '${encryptDate}' and trashed = false`); let processed = 0, success = 0; while (files.hasNext()) { const file = files.next(); processed++; try { const revisions = Drive.Revisions.list(file.getId(), {maxResults: 1000}).items; // 跳过无历史版本的文件 if (revisions.length < 2) continue; // 取倒数第二个版本,最新版本为被加密的损坏版本 const lastValidRevision = revisions[revisions.length - 2]; const content = UrlFetchApp.fetch(lastValidRevision.downloadUrl, { headers: {Authorization: `Bearer ${ScriptApp.getOAuthToken()}`} }).getBlob(); // 覆盖当前加密版本 file.setContent(content); success++; } catch (e) { console.log(`恢复文件失败:${file.getName()},错误:${e.message}`); } } console.log(`处理完成,共处理${processed}个文件,成功恢复${success}个文件`); }
脚本使用说明
- 首次运行前点击编辑器左侧「服务」按钮,找到并添加
Drive API服务,否则脚本无法调用版本相关接口 - 首次运行会触发权限校验,按提示授权你的Google Drive账号访问权限即可,个人账号可正常获取所需权限
- 先运行
keepAllRevisionsForever函数完成版本永久保留设置,再运行batchRestorePreviousVersions函数执行批量恢复 - Google账号有单日脚本运行配额限制,若文件数量较多可分2-3天分批运行,每次运行建议处理不超过2万个文件
小批量备选方案
如果需要恢复的文件数量少于100个,可以直接在Google Drive网页端操作:按住Ctrl选中多个被加密的文件,右键选择「管理版本」,手动删除最新的加密版本后,系统会自动回退到上一个历史版本。
内容的提问来源于stack exchange,提问作者Samir Kumar
相关产品推荐
相关产品推荐

