gzip não está funcionando após o pipeline

6

Por algum motivo, o gzip não funciona. Isso me dá um arquivo vazio

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

database.sql é criado corretamente e tem o tamanho correto.

No entanto database.sql.gz tem apenas 20kb e contém um arquivo vazio.

obrigado

    
por aneuryzm 04.01.2011 / 16:20

5 respostas

5

Tente isso

/usr/bin/mysqldump --opt -u root -ppassword database | gzip > database.sql.gz
    
por aneeshep 04.01.2011 / 16:30
6

Sua sintaxe está errada aqui. Como você está enviando a saída do comando mysqldump para database.sql, não há saída para ser canalizada para o gzip. Apenas remova esse bit, então você está apenas criando o arquivo gzipado: /usr/bin/mysqldump --opt -u root -ppassword database | gzip > database.sql.gz

Se você realmente deseja criar versões compactadas e descompactadas, será necessário executar dois comandos separados: /usr/bin/mysqldump --opt -u root -ppassword database > database.sql ; cat database.sql | gzip > database.sql.gz

ou use o tee para dividir a saída: /usr/bin/mysqldump --opt -u root -ppassword database | tee database.sql | gzip > database.sql.gz

    
por Mike Scott 04.01.2011 / 16:33
2

pipeline significa que você NÃO está escrevendo para o arquivo, portanto apenas remova "> database.sql" em seu one-liner.

Tente algo assim:

/ usr / bin / mysqldump --opt -u root - banco de dados de senha | gzip > database.sql.gz

    
por Clausi 04.01.2011 / 16:30
2

Porque não há mais saída após a criação do banco de dados sql database.sql. Ele não continua, portanto, o pipe não recebe nenhum dado. você poderia fazer isso: mysqldump -u root -p auth > data.sql && gzip data.sql

    
por Luis Alvarado 04.01.2011 / 16:31
2

O problema é que você está tentando redirecionar a saída para um arquivo e para um pipe.

Se você quiser compactar a saída do comando em um arquivo, use:

/usr/bin/mysqldump --opt -u root -ppassword database | gzip > database.sql.gz
    
por João Pinto 04.01.2011 / 16:32