- 了解 Drive 管理的元数据(名称、标签、indexableText 和缩略图)以及属于其他 Google Cloud 服务的元数据。
- 使用Drive API查询和调整元数据;上传文件前清理EXIF和嵌入数据。
- 尊重限制和规则(缩略图、可索引文本、扩展)并使用 gcloud 进行身份验证以进行本地 REST 测试。
你想控制文件的元数据吗? Google Drive 不知道从哪里开始?我们在这里详细解释, 如何有效安全地删除 Google Drive 中的元数据 (上传文件的元数据)。我们还会告诉您 Google 对文件名、大小和权限的限制。
本指南将让您全面而现实地了解 Google Drive 中的元数据可以(和不能)“删除”的内容。
云端硬盘中可以更改或“删除”哪些内容
这些是 元数据 可以从上传到 Google Drive 的文件中删除:
名称和扩展名: 通过 API 创建文件时,建议在名称字段中指定扩展名,例如“cat.jpg”。如果您未指定扩展名,Drive 可以根据 MIME 类型推断扩展名,但最好自行定义。在后续响应中,可能会出现一个只读的 fileExtension,其扩展名由名称填充。如果用户下载该文件,Drive 会根据标题(及其扩展名)编译最终名称。
- 可索引文本(contentHints.indexableText): Drive 默认会索引常见文档和类型(PDF、支持 OCR 的图像等)。如果您的应用保存其他格式(绘图、视频、快捷方式),您可以提供可索引文本以改进搜索。此类文本将作为 HTML 进行处理:如果您传递包含标签的字符串,则会索引文本内容,而不是标签属性。contentHints.indexableText 的大小限制为 128KB,建议您在每次保存时更新它,并确保其与文件相关。
- 缩略图(contentHints.thumbnail): Drive 会为多种类型的文件生成缩略图,但对于无法自动生成缩略图的格式,您可以在创建或更新文件时自行上传。您必须将图片设置为 URL 安全的 base64 编码,并设置相应的 mimeType。关键规则:支持的格式为 PNG、GIF 或 JPG;建议宽度为 1600 像素(最小 220 像素),最大尺寸为 2MB。文件内容发生更改时,缩略图会失效;元数据更改则不会失效。
- 访问缩略图: ThumbnailLink 字段返回一个短 URL,只有当应用有权限读取文件时才可以访问(如果文件非公开,则需要使用凭证进行请求)。您可以查询特定文件或按类型过滤的列表。
- 标签: Drive 允许您将标签与文件关联。要查找标签,您可以使用 files.listLabels;要修改标签,则必须引用相应的 labelId 和 fileId。此机制有助于在不影响内容的情况下进行分类,并在必要时“清理”不需要的分类。
删除 Google Drive 中的元数据:文件本身的“隐藏”元数据
Google Drive 中没有神奇的按钮可以删除元数据(例如照片中的 EXIF 或 PDF 中的嵌入数据)。Drive 管理自己的元数据,但文件内的元数据取决于创建它的工具。
建议的做法是 在将文件上传到云端硬盘之前清理文件, 使用系统工具或专用应用程序从图片或文档属性中删除 EXIF 数据。这样,您保存在云端硬盘中的内容就会被“净化”了。
如果您已经上传了嵌入元数据的文件,则无需在 Google Drive 中删除元数据,这样更方便 下载、清理并重新上传, 如果适用,请替换原件。对于 PDF 或图像,当您想要保护作者身份、位置或编辑历史记录时,这种方法很常见。
对于 Drive 的具体部分, 重点调整名称、标签和内容提示(indexableText/thumbnail), 这些都在您的控制之下。如果您还管理访问权限,还可以减少可见元数据的暴露(例如,具有阅读权限的用户可访问的缩略图链接)。
别忘了 仅更改 Drive 元数据不会删除 EXIF 或内部属性。 因此,您的策略应该将预清理文件与 Drive 允许您接触的细粒度元数据管理相结合。
Google Cloud 中常见混淆的元数据:虚拟机、gcloud 和限制
如果你使用 Google Cloud,你会看到很多 有关“元数据”的指南实际上是指 Compute Engine 或 Cloud Storage,而不是 Drive。 即便如此,您仍然需要了解这些要点,以便在研究时不会混淆它们。
基本 gcloud CLI 配置
安装 Google Cloud CLI 后,使用以下命令进行初始化:
gcloud init
确保您拥有最新版本非常重要:
gcloud components update
如果您使用外部身份提供者, 在使用 gcloud 之前,请使用您的联合身份登录, 尤其是在您要从本地环境进行身份验证以进行 REST 调用时。REST API 示例可以使用您在 gcloud 中配置的凭据。
虚拟机
权限和角色(Compute Engine): 要在虚拟机上添加、更新或删除自定义元数据,您需要适当的 IAM 权限。常见示例包括:
- 如果您的虚拟机使用服务帐户: 许可证
iam.serviceAccounts.actAs在服务或项目帐户中。 - 项目元数据:
compute.projects.getycompute.projects.setCommonInstanceMetadata. - 区域元数据:
compute.instanceSettings.getycompute.instanceSettings.update针对相关区域。 - 实例元数据:
compute.instances.getycompute.instances.setMetadata.
限制
这些是我们在尝试删除 Google Drive 中的元数据时遇到的主要限制:
- 尺寸限制(计算引擎): 元数据条目的总大小上限为 512 KB。每个密钥限制为 128 字节,每个值限制为 256 KB。例如,如果您使用 ssh-keys 密钥并超出 256 KB 的限制,则您将无法添加更多密钥,除非您进行清理。
- 大写和小写: 键区分大小写;值也区分大小写,布尔值除外。在 zonal 中,您无法创建两个仅大小写不同的键(zonal-metadata-key 与 ZONAL-METADATA-KEY)。
- 区域元数据: 使用 gcloud 或 REST 设置或移除。您无法为 SSH 密钥 (ssh-keys) 定义区域值。在逻辑 project/ 目录中,如果同一密钥同时存在项目级值和区域值,则区域值在其所在区域中优先。
- 支持的布尔值: 除了 TRUE/FALSE,您还可以使用 Y/Yes/1 和 N/No/0(不区分大小写)。
- 配置范围(计算引擎):
- 项目: 项目中所有虚拟机共有的元数据。
- 区域: 影响特定区域内所有虚拟机的条目,并可覆盖项目值。
- 实例: 特定虚拟机(正在创建或已经存在)的元数据。

Drive 中的缩略图、索引和元数据检索(REST 和最佳实践)
现在让我们看看在 Google Drive 中删除元数据时缩略图的作用。以及恢复它们的最佳方法:
- 本地 REST 身份验证: 如果您要从自己的机器测试 REST 示例,请使用通过 gcloud 配置的凭据。这样,您的 Drive API 调用将遵循您已设置的身份和权限。
- 自定义缩略图上传: 设置 contentHints.thumbnail 的两个字段:URL 安全的 base64 图片和正确的 mimeType。如果 Drive 可以自动生成缩略图,它会使用自己的缩略图,跳过您提供的缩略图。否则,它会使用您提供的缩略图。
Drive 中缩略图的关键规则:
- 格式:PNG、GIF 或 JPG。
- 建议宽度:1600 像素(最小 220 像素)。
- 最大大小:2MB。
- 如果缩略图仍然相关,则在每次保存时更新缩略图。
重要信息 无效: 文件内容更改时,缩略图会失效;元数据更改则不会。如果您仅更改标签或名称,除非您修改文件,否则不会出现新的缩略图。
可索引文本
不要试图用流行词来“欺骗”搜索。捕捉用户在搜索该文件时会合理使用的概念和术语,并且 检查 128KB 限制。 每当内容发生重大变化时就进行更新。
应用一致的名称和扩展上传时,请尽可能在名称中包含扩展名;如果缺少扩展名,云端硬盘会尝试通过 MIME 推断。保持名称清晰可避免歧义,并方便搜索扩展名。
云端硬盘中的标签
要修改标签,请记下必要的标识符。您需要标签的 labelId 和文件的 fileId。您可以先使用 files.listLabels 列出它们,然后将相应的更改应用于目标文件。
// Al modificar etiquetas de un archivo en Drive:
// - labelId: identificador de la etiqueta a cambiar
// - fileId: identificador del archivo al que aplicas la etiqueta
// Usa files.listLabels para localizarlas antes de actualizar.
请记住, 虽然 Drive 是重点,但许多开发项目将 Drive 与云存储或其他服务相结合, 因此,您将看到用于检查对象属性的存储示例。
// Ejemplo en Go para obtener atributos de un objeto en Cloud Storage (no Drive)
// e imprimir metadatos como ContentType, CacheControl, MD5, etc.
// Útil si tu flujo sube primero a Storage y luego a Drive.
import (
"context"
"fmt"
"io"
"time"
"cloud.google.com/go/storage"
)
func getMetadata(w io.Writer, bucket, object string) (*storage.ObjectAttrs, error) {
ctx := context.Background()
client, err := storage.NewClient(ctx)
if err != nil { return nil, fmt.Errorf("storage.NewClient: %w", err) }
defer client.Close()
ctx, cancel := context.WithTimeout(ctx, 10*time.Second)
defer cancel()
o := client.Bucket(bucket).Object(object)
attrs, err := o.Attrs(ctx)
if err != nil { return nil, fmt.Errorf("Object(%q).Attrs: %w", object, err) }
fmt.Fprintf(w, "Bucket: %v\n", attrs.Bucket)
fmt.Fprintf(w, "CacheControl: %v\n", attrs.CacheControl)
fmt.Fprintf(w, "ContentDisposition: %v\n", attrs.ContentDisposition)
fmt.Fprintf(w, "ContentEncoding: %v\n", attrs.ContentEncoding)
fmt.Fprintf(w, "ContentLanguage: %v\n", attrs.ContentLanguage)
fmt.Fprintf(w, "ContentType: %v\n", attrs.ContentType)
fmt.Fprintf(w, "Crc32c: %v\n", attrs.CRC32C)
fmt.Fprintf(w, "Generation: %v\n", attrs.Generation)
fmt.Fprintf(w, "KmsKeyName: %v\n", attrs.KMSKeyName)
fmt.Fprintf(w, "Md5Hash: %v\n", attrs.MD5)
fmt.Fprintf(w, "MediaLink: %v\n", attrs.MediaLink)
fmt.Fprintf(w, "Metageneration: %v\n", attrs.Metageneration)
fmt.Fprintf(w, "Name: %v\n", attrs.Name)
fmt.Fprintf(w, "Size: %v\n", attrs.Size)
fmt.Fprintf(w, "StorageClass: %v\n", attrs.StorageClass)
fmt.Fprintf(w, "TimeCreated: %v\n", attrs.Created)
fmt.Fprintf(w, "Updated: %v\n", attrs.Updated)
fmt.Fprintf(w, "Event-based hold enabled? %t\n", attrs.EventBasedHold)
fmt.Fprintf(w, "Temporary hold enabled? %t\n", attrs.TemporaryHold)
fmt.Fprintf(w, "Retention expiration time %v\n", attrs.RetentionExpirationTime)
fmt.Fprintf(w, "Custom time %v\n", attrs.CustomTime)
fmt.Fprintf(w, "Retention: %+v\n", attrs.Retention)
fmt.Fprintf(w, "\n\nMetadata\n")
for key, value := range attrs.Metadata {
fmt.Fprintf(w, "\t%v = %v\n", key, value)
}
return attrs, nil
}
删除文件与删除 Google Drive 中的元数据
如果你想要的是 从云端硬盘中删除文件作为所有者,您可以通过右键单击并选择“移至废纸篓”将其从网页移至废纸篓。如果所有者是其他人,您只能从您的视图中“移除”该文件;其他人仍然可以看到它。
至 要永久删除文件,您必须清空垃圾箱或使用永久删除选项, 在这种情况下,您将无法恢复它。这本身并不会从其他文件中删除“元数据”——它只适用于该项目。
您无法删除 Google Drive 中不属于您的文件的元数据, 因为它们的控制权属于创建者或组织内拥有更高权限的人员。在这种情况下,您只需移除您的访问权限或可见性即可。
将其与元数据关联: 删除文件会同时删除其在云端硬盘中的元数据, 但它不会影响系统中保留的其他副本中的元数据或其他文档中嵌入的元数据。
有了以上这些,你现在可以很好地区分 Drive 控制哪些元数据(名称、标签、搜索提示和缩略图)、如何通过 REST 查询它们、上传前清理嵌入数据应遵循哪些最佳实践,以及当您遇到在其他情况下讨论“元数据”的 Google Cloud 文档时会出现哪些限制和权限。
专门研究技术和互联网问题的编辑,在不同数字媒体领域拥有十多年的经验。我曾在电子商务、通讯、在线营销和广告公司担任编辑和内容创作者。我还在经济、金融和其他领域的网站上撰写过文章。我的工作也是我的热情所在。现在,通过我的文章 Tecnobits,我尝试探索技术世界每天为我们提供的所有新闻和新机会,以改善我们的生活。