从谷歌云存储流恢复“mongodump”备份

时间:2021-01-16 17:01:05

标签: mongodb google-cloud-storage gsutil mongodump mongorestore

由于磁盘空间限制,我想直接从谷歌云存储对象恢复一个非常大的数据库转储,而不必下载并将其保存到本地文件。

我有 mongodump 生成的数据库转储(有和没有 --gzip

当我尝试使用以下命令将数据库转储数据通过管道传输到 mongorestore 时 (我指的是Streaming transfers

gsutil cp - gs://<bucket>/<object_path> | mongorestore --uri=<connection_uri> --archive

进程卡在以下输出

Copying from <STDIN>...
/ [0 files][    0.0 B/    0.0 B]

我不确定是 gsutil 还是 mongorestore 问题

该文件是一个有效的 mongodump 文件,因为我试图下载一个小的数据库转储,我可以使用 mongorestore --uri=<connection_uri> --archive=<local_file_path>

成功恢复它

gsutil 版本:4.57

mongorestore 版本:100.2.0

1 个答案:

答案 0 :(得分:2)

gsutil 命令中的破折号位于源参数的位置,而不是目标位置,因此它尝试从 STDIN 复制到 gs:// 路径(这会覆盖您的对象!)。

如果要将 GCS 对象的内容通过管道传送到另一个程序,可以使用 gsutil cp 并将目标参数设为短划线字符,或者更简单地说,只需使用 gsutil cat gs://...