管道之后 gzip 不起作用

管道之后 gzip 不起作用

由于某种原因,gzip 不起作用。它给我一个空文件

/usr/bin/mysqldump --opt -u root -ppassword database > database.sql | gzip > database.sql.gz

database.sql 已正确创建,并且具有正确的大小。

但是database.sql.gz只有20kb并且包含一个空文件。

谢谢

答案1

您的语法在这里是错误的。由于您将 mysqldump 命令的输出发送到 database.sql,因此没有剩余的输出可以通过管道传输到 gzip。只需删除该位,这样您就只创建了 gzip 文件:/usr/bin/mysqldump --opt -u root -ppassword database | gzip > database.sql.gz

如果您确实想要创建压缩和未压缩的版本,则需要运行两个单独的命令:/usr/bin/mysqldump --opt -u root -ppassword database > database.sql ; cat database.sql | gzip > database.sql.gz

或者使用 tee 分割输出:/usr/bin/mysqldump --opt -u root -ppassword database | tee database.sql | gzip > database.sql.gz

答案2

尝试这个

/usr/bin/mysqldump --opt -u root -ppassword database | gzip > database.sql.gz

答案3

管道意味着您没有写入文件,因此只需在单行代码中删除“ > database.sql”即可。

尝试这样做:

/usr/bin/mysqldump --opt -u root -p密码数据库 | gzip > database.sql.gz

答案4

问题是您试图将输出重定向到文件和管道。

如果要将命令的输出压缩到文件,则必须使用:

/usr/bin/mysqldump --opt -u root -ppassword database | gzip > database.sql.gz

相关内容