具有递归选项的 gsutil 保留

gsutil retention with recursive option

您知道是否可以删除包含其中任何子文件夹的存储桶的保留吗?

我试过 -m 选项,它只包含对象(文件)但不包含子文件夹和这些子文件夹中的对象,这正是我想要的:

gsutil -m retention event release gs://mybucket/input/*

我得到以下信息:

Omitting prefix "gs://mybucket/input/fromkafka-05df04d2-1148-4266-857b-7bba574b2f17/_temporary/0/_temporary/attempt_20200803174938_11051_r_000000_0/". (Did you mean to do retention -r?)
Omitting prefix "gs://mybucket/input/fromkafka-05df04d2-1148-4266-857b-7bba574b2f17/_temporary/0/_temporary/attempt_20200803174938_11051_r_000000_1/". (Did you mean to do retention -r?)
Omitting prefix "gs://mybucket/input/fromkafka-05df04d2-1148-4266-857b-7bba574b2f17/_temporary/0/_temporary/attempt_20200803174938_11051_r_000000_2/". (Did you mean to do retention -r?)
Omitting prefix "gs://mybucket/input/fromkafka-05df04d2-1148-4266-857b-7bba574b2f17/_temporary/0/_temporary/attempt_20200803174938_11051_r_000000_3/". (Did you mean to do retention -r?)
Omitting prefix "gs://mybucket/input/fromkafka-05df04d2-1148-4266-857b-7bba574b2f17/_temporary/0/_temporary/attempt_20200803174938_11051_r_000001_0/". (Did you mean to do retention -r?)
Omitting prefix "gs://mybucket/input/fromkafka-05df04d2-1148-4266-857b-7bba574b2f17/_temporary/0/_temporary/attempt_20200803174938_11051_r_000001_1/". (Did you mean to do retention -r?)
Omitting prefix "gs://mybucket/input/fromkafka-05df04d2-1148-4266-857b-7bba574b2f17/_temporary/0/_temporary/attempt_20200803174938_11051_r_000001_2/". (Did you mean to do retention -r?)
Omitting prefix "gs://mybucket/input/fromkafka-05df04d2-1148-4266-857b-7bba574b2f17/_temporary/0/_temporary/attempt_20200803174938_11051_r_000001_3/". (Did you mean to do retention -r?)

我也尝试过使用那个 -r 选项,但我得到了这个:

gsutil -r retention event release gs://mybucket/*

Traceback (most recent call last):
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/utils/arg_helper.py", line 35, in GetArgumentsAndOptions
    'testexceptiontraces', 'trace-token=', 'perf-trace-token='
  File "/usr/lib/python3.7/getopt.py", line 95, in getopt
    opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:])
  File "/usr/lib/python3.7/getopt.py", line 195, in do_shorts
    if short_has_arg(opt, shortopts):
  File "/usr/lib/python3.7/getopt.py", line 211, in short_has_arg
    raise GetoptError(_('option -%s not recognized') % opt, opt)
getopt.GetoptError: option -r not recognized

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/__main__.py", line 65, in <module>
    opts, args = GetArgumentsAndOptions()
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/utils/arg_helper.py", line 38, in GetArgumentsAndOptions
    raise CommandException(e.msg)
gslib.exception.CommandException: CommandException: option -r not recognized

During handling of the above exception, another exception occurred:

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 122, in RunMain
    import gslib.__main__
  File "/usr/lib/google-cloud-sdk/platform/gsutil/gslib/__main__.py", line 67, in <module>
    reason = e.reason if e.information else 'CommandException: %s' % e.reason
AttributeError: 'CommandException' object has no attribute 'information'

您可以添加尽可能多的子文​​件夹级别的星号,如下所示:

user@cs-121:~$ gsutil retention event release  gs://test_bucket/****
Releasing Event-Based Hold on gs://test_bucket/folder/...
Releasing Event-Based Hold on gs://test_bucket/folder/folder2/...
Releasing Event-Based Hold on gs://test_bucket/folder/folder2/tenor.gif...
Releasing Event-Based Hold on gs://test_bucket/folder/foo.bar...
/ [4 objects]
==> NOTE: You are performing a sequence of gsutil operations that may
run significantly faster if you instead use gsutil -m retention ...
Please see the -m section under "gsutil help options" for further
information about when gsutil -m can be advantageous.

Releasing Event-Based Hold on gs://test_bucket/hello.json...
/ [5 objects]
Operation completed over 5 objects.

您也可以指定一级目录,在后面加上星号

 gsutil retention event release  gs://test_bucket/folder/****