【问题标题】:gsutil cp creates nested directorygsutil cp 创建嵌套目录
【发布时间】:2021-10-10 05:31:07
【问题描述】:

我正在尝试将文件夹 (/data/out) 从 Cloud Build 复制到 Google Cloud Storage:

  - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk:slim'
    volumes:
      - name: 'vol1'
        path: '/data'
    entrypoint: 'gsutil'
    args:
      - -m
      - cp
      - -r
      - /data/out
      - gs://mybucket/files

第一次运行时,/data/out 中的所有内容都会复制到存储桶中,这正是我想要的。

当我第二次运行它来覆盖/更新文件时,有一个文件夹/files/out,所以新文件在mybucket/files/out/*而不是mybucket/files/*。

我该如何解决这个问题?

我尝试在再次复制之前添加另一个步骤以删除文件夹 (rm -r gs://mybucket/files),但此步骤第一次失败,因为该文件夹尚不存在,导致构建失败/完全停止。

【问题讨论】:

    标签: google-cloud-platform google-cloud-storage google-cloud-build gsutil


    【解决方案1】:

    感谢Cloud Build -> Google Cloud Storage: Question about downtimes at deployment time,终于可以使用rsync 而不是cp了

    - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk:slim'
        id: copy
        volumes:
          - name: 'vol1'
            path: '/data'
        entrypoint: 'gsutil'
        args:
          - -m
          - rsync
          - -r
          - -d
          - /data/out/
          - gs://mybucket/folder
    

    【讨论】:

      【解决方案2】:

      我将上一步中生成的本地文件夹复制到 GS 存储桶。随后构建运行并覆盖文件。

      我用过:

      - name: 'gcr.io/cloud-builders/gsutil'
        args: [ 'cp', '-r',
                  './public',
                  'gs://{BUCKET_NAME}/test' ]
      

      【讨论】:

      • 对我不起作用。创建一个包含文件的嵌套out/ 文件夹,而不是直接复制。
      猜你喜欢
      • 2011-09-28
      • 2012-06-13
      • 2017-02-09
      • 2012-02-29
      • 2015-01-30
      • 1970-01-01
      • 2015-05-13
      相关资源
      最近更新 更多