gsutil出现CommandException错误,cp命令在MacOS Catalina运行失败如何解决?
报错含义解释
CommandException: Destination URL must name a directory, bucket, or bucket subdirectory for the multiple source form of the cp command.
该报错指当gsutil cp识别到传入了2个及以上的源路径参数时,会自动进入多源拷贝模式,该模式强制要求最后一个参数必须是可写入的本地目录、云存储桶或者桶子目录作为所有源文件的统一存放目标,不符合该要求就会抛出异常。
本次报错的核心原因
你执行的命令里-v(冗余输出)参数的位置错误:你将它放在了目标路径/Users/alex的后方,导致gsutil解析参数时,误将/Users/alex判定为第二个源路径,将-v判定为目标路径,自然不符合多源拷贝的规则,哪怕你本地/Users/alex确实存在也会报错。
修复与排查步骤
- 优先调整参数位置,将所有选项放在源路径、目标路径之前,修正后的命令如下:
gsutil cp -r -v gs://elium/photo.video/ /Users/alex
如果拷贝的文件数量多、体积大,可以额外加-m参数开启多线程传输提升速度,命令为gsutil -m cp -r -v gs://elium/photo.video/ /Users/alex。
2. 调整参数后仍报错可按以下顺序排查:
- 验证账号对云存储路径的读权限,执行
gsutil ls gs://elium/photo.video/,确认可以正常列出路径下的文件 - 验证本地目标路径的读写权限,执行
touch /Users/alex/test_temp_file,确认可以正常创建临时文件 - 升级gsutil到最新稳定版,执行
gcloud components update gsutil后重试
内容的提问来源于stack exchange,提问作者Alex E
相关产品推荐
相关产品推荐

