Windows下使用gsutil下载谷歌云文件报WinError 267错误咨询
报错根本原因
触发该错误的核心原因是Windows本地文件系统的命名规则限制:
Windows系统禁止文件、目录名称中包含半角冒号:字符,你本次下载的GCS对象路径中,父级对象前缀为Resource: -5623962341676446683,名称包含冒号。gsutil递归下载时会尝试在本地创建和云端路径同名的目录,调用Windows系统接口创建目录时直接触发[WinError 267] 目录名无效的系统级报错。
你能在谷歌云控制台正常访问、其他无特殊字符的文件夹能正常下载,是因为GCS作为对象存储本身不存在真实目录结构,对象键(Key)支持包含冒号这类特殊字符,和本地文件系统的命名规则不冲突。
可直接使用的解决方法
- 重命名本地输出目录:下载时手动指定不含特殊字符的本地保存路径,避开原路径里的冒号即可,不会影响下载文件的完整性,示例命令:
gsutil -m cp -r "gs://takeout-export-c98906c8-f41d-4702-a512-8a6affaffb1c/20220608T548213Z/Resource: -5623962341676446683" "./Resource_5623962341676446683"
- 切换到WSL环境执行命令:Windows Subsystem for Linux使用的Linux文件系统支持文件名包含冒号,在WSL中安装配置gsutil后执行原命令即可正常创建同名目录完成下载。
- 跳过同名目录创建步骤:提前在本地创建好合法命名的空目录,进入该目录后直接下载目标路径下的所有文件,不触发递归创建父目录的逻辑,示例命令:
# 先进入提前建好的本地目录,比如D:\takeout\Resource_5623962341676446683 gsutil -m cp "gs://takeout-export-c98906c8-f41d-4702-a512-8a6affaffb1c/20220608T548213Z/Resource: -5623962341676446683/*" .
内容的提问来源于stack exchange,提问作者subbusam
相关产品推荐
相关产品推荐

