如何解决如何在文件列表上使用 gsutil rsync
假设一个配置文件在 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}
引用配置文件列表中的每个文件夹要同步到的目标文件夹。
这适用于 gsutil cp 但是 rsync 更高效/有效地满足我的需求。
cat ${1} | gsutil -m cp -R -I ${2}
如何才能做到这一点? 谢谢
解决方法
如您所知,rsync 不支持函数使用 stdin 之类的 -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*
并运行您编写的脚本文件。
这个方法有点麻烦,但是可以达到你想要的效果。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。