【问题标题】:How can one use gsutil rsync on a list of files如何在文件列表上使用 gsutil rsync
【发布时间】:2021-03-29 15:49:11
【问题描述】:

给定一个配置文件,该文件在 Google Cloud Storage 中以新行分隔一组文件夹(无法使用完整的目录列表(太大)),如下所示:

gs://databucket/path/to/dir/441738
gs://databucket/path/to/dir/441739
gs://databucket/path/to/dir/441740

如何在 bash 脚本中使用 gsutil 递归地同步文件,同时删除目标文件夹中不存在的文件?

我尝试在 bash 脚本中使用以下内容

cat ${1} | gsutil -m rsync -r -d ${2}

之后我收到错误代码 126

${1} 引用上述配置文件,${2} 引用配置文件列表中每个文件夹将被 rsync 到的目标文件夹。 这适用于 gsutil cp 但是 rsync 更有效/更有效地满足我的需求。

cat ${1} | gsutil -m cp -R -I ${2}

如何做到这一点? 谢谢

【问题讨论】:

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


    【解决方案1】:

    如你所知,rsync 不支持函数使用标准输入,如 -I 标志...

    所以你必须使用与 cp 不同的方法。

    如果您想在单个命令中同步多个文件夹,请编写每行包含 rsync 命令的批处理脚本,如下所示。

    gsutil -m rsync -r -d gs://databucket/path/to/dir/441738 *destination_folder1*
    gsutil -m rsync -r -d gs://databucket/path/to/dir/441739 *destination_folder2*
    gsutil -m rsync -r -d gs://databucket/path/to/dir/441740 *destination_folder3*
    

    并运行您编写的脚本文件。

    这个方法有点麻烦,但是可以达到你想要的效果。

    【讨论】:

      猜你喜欢
      • 2019-01-14
      • 2015-05-06
      • 2020-03-20
      • 1970-01-01
      • 2020-05-16
      • 2018-11-08
      • 1970-01-01
      • 2019-02-22
      • 2018-06-30
      相关资源
      最近更新 更多