gpt4 book ai didi

shell脚本: Use a pipe as an input for tar

转载 作者:行者123 更新时间:2023-12-02 06:16:13 25 4
gpt4 key购买 nike

我正在尝试找出一种在 Ubuntu Server LTS 上使用 tar+pipes 的方法。

我有一个 postgresql 命令 ( pg_dump ),它在标准输出上输出大量 sql:

pg_dump -U myUser myDB

我知道如何将其重定向到文件:

pg_dump -U myUser myDB > myDB.sql

为了节省一些磁盘空间,我宁愿将其压缩:我可以从 myDB.sql 中创建一个 tar.gz 文件,然后删除 myDB.sql。

但我想知道 - 有没有一种方法可以在不创建中间 .sql 文件的情况下执行此操作?我相信这可以通过管道来完成...但是我不是 shell 专家,对它们知之甚少(我能够做到 ls | more ,仅此而已)。我尝试过 pg_dump .. | tar ... 的几种变体但没有成功。

如何使用管道来使用 pg_dump 的输出作为 tar 的输入?或者我只是搞错了什么?

最佳答案

我根本不明白“tar”是如何融入其中的;为什么不直接压缩转储文件本身呢?

pg_dump -U myUser myDB | gzip > myDB.sql.gz

然后,恢复:

gzip -cd myDB.sql.gz | pg_restore ...

“tar”实用程序用于将一堆文件和目录捆绑到一个文件中(该名称是“tape archive”的缩写)。在这方面,“tar”文件有点像“zip”文件,只不过“zip”总是意味着压缩,而“tar”则不然。

最后请注意,“gzip”不是“zip”。 “gzip”实用程序只是压缩;它不会制作文件。

关于shell脚本: Use a pipe as an input for tar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2379482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com