【问题标题】:Receiving "bad character range" error from Google Cloud SDK从 Google Cloud SDK 接收“错误字符范围”错误
【发布时间】:2019-12-22 23:33:26
【问题描述】:

所以我正在尝试向我的 minecraft 服务器添加自动备份,并且我正在使用一个 bash 脚本来自动保存世界并将其放入云存储中。每当我运行脚本时,我都会收到此错误:

raise error, v # 无效表达式 sre_constants.error: 错误的字符范围

听说是 Python 2.7 的问题后,我已经安装了 Python 3,并且脚本运行 2.7 时仍然出现同样的错误。

Python 版本:2.7.13(使用)和 3.5.3。 Debian Linux

bash 脚本:

#!/bin/bash
screen -r mcs -X stuff '/save-all\n/save-off\n'
/usr/bin/gsutil cp -R ${BASH_SOURCE%/*}/world gs://[terits-smp-minecraft-minecraft-backup]/$(date "+%Y%m%d-%H%M%S")-world
screen -r mcs -X stuff '/save-on\n'

完整的调试日志:

Traceback (most recent call last):
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gsutil", line 21, in <module>
    gsutil.RunMain()
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gsutil.py", line 124, in RunMain
    sys.exit(gslib.__main__.main())
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/__main__.py", line 433, in main
    user_project=user_project)
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/__main__.py", line 762, in _RunNamedCommandAndHandleExceptions
    _HandleUnknownFailure(e)
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/__main__.py", line 628, in _RunNamedCommandAndHandleExceptions
    user_project=user_project)
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/command_runner.py", line 411, in RunNamedCommand
    return_code = command_inst.RunCommand()
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/commands/cp.py", line 1162, in RunCommand
    copy_helper_opts.daisy_chain,
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/name_expansion.py", line 650, in __init__
    name_expansion_dest_tuple = next(self.name_expansion_dest_iter)
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/commands/cp.py", line 1093, in _ConstructNameExpansionIteratorDstTupleIterator
    logger=self.logger))
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/utils/copy_helper.py", line 1419, in ExpandUrlToSingleBlr
    logger=logger))
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/wildcard_iterator.py", line 161, in __iter__
    for bucket_listing_ref in self._ExpandBucketWildcards(bucket_fields=['id']):
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/wildcard_iterator.py", line 389, in _ExpandBucketWildcards
    prog = re.compile(regex)
  File "/usr/lib/python2.7/re.py", line 194, in compile
    return _compile(pattern, flags)
  File "/usr/lib/python2.7/re.py", line 251, in _compile
    raise error, v # invalid expression
sre_constants.error: bad character range

到目前为止,我一直在使用本指南来帮助我,因为我对谷歌云不太了解: https://cloud.google.com/solutions/gaming/minecraft-server#schedule_backups

【问题讨论】:

  • 这里errorv的值是多少?
  • "${BASH_SOURCE%/*}" 的计算结果是什么?

标签: google-app-engine google-cloud-platform google-cloud-storage


【解决方案1】:

这个错误raise error, v # invalid expression 是由 gsutil 触发的。这是因为你没有关注object naming rules

这部分是无效的$(date "+%Y%m%d-%H%M%S"),因为您使用的是通配符,这些字符被 gsutil 直接采用,并且您还在名称中留下了一个不被接受的空格。

我建议您在批处理的另一个步骤中获取日期和时间,然后将其作为字符串直接添加到 gsutil 命令中。

【讨论】:

    猜你喜欢
    • 2019-02-14
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 2018-07-28
    • 2020-02-08
    • 1970-01-01
    相关资源
    最近更新 更多