如何在文件列表上使用 gsutil rsync
Posted
技术标签:
【中文标题】如何在文件列表上使用 gsutil rsync【英文标题】:How can one use gsutil rsync on a list of files 【发布时间】: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
如何做到这一点? 谢谢
【问题讨论】:
【参考方案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*
并运行您编写的脚本文件。
这个方法有点麻烦,但是可以达到你想要的效果。
【讨论】:
以上是关于如何在文件列表上使用 gsutil rsync的主要内容,如果未能解决你的问题,请参考以下文章
无论如何要在某个时间戳之后 rsync gsutil 文件?
继续中断 rsync 后 .gstmp 文件上的 gsutil rsync 错误