通过管道将 stdin 传输到 tar 时出现问题

通过管道将 stdin 传输到 tar 时出现问题

我需要将数据(多个文件和目录)从 Google 云存储存储桶写入本地磁盘上的 Tar 存档。目录大小为多个 TB,因此我不想在磁盘上创建 Tar 存档然后复制它。

我当前的策略是使用 gsutil(Google 的 python 实用程序,用于从云存储复制)并将其通过管道传输到 tar。我使用以下命令在单个文本文件上测试它:

gsutil cp gs://data/myfile.txt - | tar -czvf myfile.tar.gz -T -

我遇到的问题是 shell 似乎正在扩展文本文件的实际内容并尝试将文本文件作为参数传递给 tar。我收到以下错误消息:

'ar: unrecognized option '---- BASELINE

由于我的文本文件包含一行“---- BASELINE”,我认为 shell 正在尝试扩展文本文件的输入。我尝试在几个地方加上双引号,但无法弄清楚。

谢谢!

相关内容