【问题标题】:gsutil fails to upload file with "codec can't decode byte" errorgsutil 无法上传文件并出现“编解码器无法解码字节”错误
【发布时间】:2014-08-12 01:14:33
【问题描述】:

我正在使用命令将静态网站上传到云存储

gsutil cp -v -R -c * gs://www.gennadiy-dolzhenko.ru

中间过程失败,输出如下

...SNIP...
Copying file://tourism_studies/models/articles/54-moskva/slideshow/resized/sk576.jpg [Content-Type=image/jpeg]...
Created: gs://www.gennadiy-dolzhenko.ru/tourism_studies/models/articles/54-moskva/slideshow/resized/sk576.jpg#1403352412336000
Copying file://tourism_studies/models/articles/54-moskva/slideshow/resized/7.jpg [Content-Type=image/jpeg]...
Created: gs://www.gennadiy-dolzhenko.ru/tourism_studies/models/articles/54-moskva/slideshow/resized/7.jpg#1403352412725000
'ascii' codec can't decode byte 0xdd in position 1: ordinal not in range(128)

不清楚哪个文件有问题,-c 标志不会使工具按照描述继续上传。如何确定导致错误的原因或至少让工具上传尽可能多的文件?

更新:使用-D 开关,我能够追踪到以下错误

Comparing local vs cloud md5-checksum for tourism_studies/models/articles/54-moskva/slideshow/resized/7.jpg. (O8RgYfpRe8ylUbJh4UPfWg==/O8RgYfpRe8ylUbJh4UPfWg==)
Created: gs://www.gennadiy-dolzhenko.ru/tourism_studies/models/articles/54-moskva/slideshow/resized/7.jpg#1403367381161000
'ascii' codec can't decode byte 0xdd in position 1: ordinal not in range(128)


Encountered exception while copying:
Traceback (most recent call last):
  File "/home/evgeniy/gsutil/gslib/command.py", line 1105, in _SequentialApply
    args = args_iterator.next()
  File "/home/evgeniy/gsutil/gslib/plurality_checkable_iterator.py", line 57, in _PopulateHead
    e = self.base_iterator.next()
  File "/home/evgeniy/gsutil/gslib/name_expansion.py", line 294, in __iter__
    for (names_container, blr) in post_step3_iter:
  File "/home/evgeniy/gsutil/gslib/plurality_checkable_iterator.py", line 57, in _PopulateHead
    e = self.base_iterator.next()
  File "/home/evgeniy/gsutil/gslib/name_expansion.py", line 521, in __iter__
    for (names_container, blr) in self.tuple_iter:
  File "/home/evgeniy/gsutil/gslib/plurality_checkable_iterator.py", line 57, in _PopulateHead
    e = self.base_iterator.next()
  File "/home/evgeniy/gsutil/gslib/name_expansion.py", line 580, in __iter__
    for exp_blr in implicit_subdir_iterator:
  File "/home/evgeniy/gsutil/gslib/plurality_checkable_iterator.py", line 57, in _PopulateHead
    e = self.base_iterator.next()
  File "/home/evgeniy/gsutil/gslib/wildcard_iterator.py", line 560, in IterAll
    for bucket_listing_ref in self.__iter__():
  File "/home/evgeniy/gsutil/gslib/wildcard_iterator.py", line 519, in __iter__
    for filepath in filepaths:
  File "/home/evgeniy/gsutil/gslib/wildcard_iterator.py", line 530, in _IterDir
    for dirpath, unused_dirnames, filenames in os.walk(directory):
  File "/usr/lib/python2.7/os.py", line 294, in walk
    for x in walk(new_path, topdown, onerror, followlinks):
  File "/usr/lib/python2.7/os.py", line 294, in walk
    for x in walk(new_path, topdown, onerror, followlinks):
  File "/usr/lib/python2.7/os.py", line 294, in walk
    for x in walk(new_path, topdown, onerror, followlinks):
  File "/usr/lib/python2.7/os.py", line 294, in walk
    for x in walk(new_path, topdown, onerror, followlinks):
  File "/usr/lib/python2.7/os.py", line 294, in walk
    for x in walk(new_path, topdown, onerror, followlinks):
  File "/usr/lib/python2.7/os.py", line 284, in walk
    if isdir(join(top, name)):
  File "/usr/lib/python2.7/posixpath.py", line 80, in join
    path += '/' + b
UnicodeDecodeError: 'ascii' codec can't decode byte 0xdd in position 1: ordinal not in range(128)

【问题讨论】:

  • 嗨 - 您能否将以下输出发送到 gs-team@google.com(并在您这样做时去除授权标头):gsutil -D cp -v -R -c * gs://www.gennadiy-dolzhenko.ru
  • 嗨@MikeSchwartz,发送了附有日志的电子邮件,如果有人可以看看会很酷。还使用失败的堆栈跟踪更新了问题。

标签: google-cloud-storage gsutil


【解决方案1】:

这里的问题是文件名包含无效的 Unicode 字符。我们已更改 gsutil 以针对这种情况提供更有用的错误消息。此更改将包含在 gsutil 4.4 中。

【讨论】:

猜你喜欢
  • 2014-08-29
  • 1970-01-01
  • 2021-12-18
  • 1970-01-01
  • 1970-01-01
  • 2011-09-13
  • 2016-08-03
  • 1970-01-01
相关资源
最近更新 更多