Azcopy上传Blob时设置含分号的元数据失败如何解决?
解决AzCopy上传Blob时元数据值含分号的问题
这个问题其实是AzCopy解析--metadata参数的规则导致的——默认情况下,AzCopy用分号;作为多个元数据键值对的分隔符,所以当你的元数据值里本身包含分号时,它会错误地把这个分号当成新键值对的开始,导致命令解析失败。
这里有两种可靠的解决方法,根据你使用的操作系统选择就行:
Windows系统
方法1:转义分号
用^符号转义值里的分号,让AzCopy把它当作值的一部分:
azcopy copy "<local file path>" "<blob file path>?<sas token>" --metadata "demo=2^;5"
方法2:用双引号包裹单个键值对
把整个键值对用额外的双引号包裹(注意内部的双引号要转义):
azcopy copy "<local file path>" "<blob file path>?<sas token>" --metadata "\"demo=2;5\""
Linux/macOS系统
方法1:转义分号
用\符号转义值里的分号:
azcopy copy "<local file path>" "<blob file path>?<sas token>" --metadata "demo=2\;5"
方法2:用单引号包裹键值对
单引号在Shell里不会解析内部的特殊字符,直接用单引号把键值对包起来就行:
azcopy copy "<local file path>" "<blob file path>?<sas token>" --metadata 'demo=2;5'
你可以选其中一种方法试试,上传完成后可以用azcopy show命令查看Blob的元数据,确认demo的值确实是2;5:
azcopy show "<blob file path>?<sas token>" --metadata
内容的提问来源于stack exchange,提问作者Samyne
相关产品推荐
相关产品推荐

