谷歌 gsutil:ASCII编解码器无法编码字符

3

我正在尝试将本地文件夹同步到Google云Nearline存储,但遇到以下错误:

"Caught non-retryable exception while listing file:///var/lib/..: 'ascii' codec can't encode character u'\xe9' in position 170: ordinal not in range(128)
CommandException: Caught non-retryable exception - aborting rsync
Caught ^C - exiting"

有什么解决方案吗?谢谢。

将您的文件夹名称更改为仅包含A-Za-z0-9和一些特殊字符,同时避免使用过长的文件夹名称,因为这可能会增加路径字符串的长度,导致错误。 - ZdaR
谢谢您的回答,anmol_uppal。但是我尝试同步一个位于“A-Za-z0-9”文件夹名称下的文件,但错误仍然存在。我猜这与UTF-8不同的字符编码有关。 - Francesco Pedrotti
2个回答

1

看起来您在尝试同步的文件名中有一个带重音符号的 e - é。

对于所有对象名称和文件名使用 UTF-8 可确保 gsutil 在操作文件时不会遇到字符编码错误。不幸的是,即使以这种方式上传/下载文件,仍然可能出现互操作性问题,原因与 gsutil 无关;例如:在不同平台之间复制文件名,例如 Linux 和 Windows。如果您正在使用 Windows 控制台,则可以指定通配符或文件夹(使用 -R 选项),而不是明确命名的单个文件,以防止出现此问题。

如果您有太多文件,可以使用工具将旧的字符编码转换为 UTF-8。其中一种工具是 native2ascii


由于有成千上万个文件,如何找出文件名错误的文件? - arvindwill

1

或者您可以使用https://github.com/minio/mc,它支持以S3兼容模式在Google Cloud Storage上进行操作。

mc完全支持UTF-8,可以上传和下载所有已知的UTF-8字符。

按照Google凭据指南获取您的AccessKeyID和SecretAccessKey。一旦您拥有它们,请更新您的~/./mc/config.json配置文件。

$ mc config host add storage.googleapis.com <your_access_key> <your_secret_key> S3v2

注意:Google Cloud Storage仅支持传统签名版本2 :(,因此您必须选择-S3v2


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接