Como compactar um dump mysql usando 7z através de um pipe?

6

Eu tenho tentado comprimir minha saída mysqldump via 7z usando o operador pipe (eu vi esta pergunta, mas sua resposta usa xz não 7z). Isso é o que eu tentei até agora:

mysqldump -u root -p Linux_Wiki | 7z > backup.sql.7z

e:

mysqldump -u root -p Linux_Wiki | 7za > backup.sql.7z

e:

mysqldump -u root -p Linux_Wiki | '7za a' > backup.sql.7z

e:

mysqldump -u root -p Linux_Wiki | '7za a' > backup.sql.7z

Todos os quatro falharam, mas tenho certeza de que tenho p7zip instalado, depois que todas as últimas tentativas deram essa saída:

Enter password: bash: 7-Zip: command not found
mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when trying to connect
    
por Brenton Horne 25.09.2015 / 12:48

3 respostas

7

Primeiro armazene a senha em um arquivo chamado .my.cnf no diretório inicial dos usuários com o seguinte formato:

[mysqldump]
password=secret

Então, você tem que usar mysqldump sem o -p flag para despejar um banco de dados mysql (agora ele usa a senha do arquivo):

mysqldump -u root database | 7z a -si backup.sql.7z
  • O a sinalizador de 7z é adicionado ao arquivo
  • -si significa ler a partir da entrada padrão (do canal anônimo).
por 25.09.2015 / 13:05
0

Algumas pessoas podem desaprovar esta prática, mas você pode colocar a senha na linha de comando, assim:

mysqldump -u root -pmyrootpassword database | 7z a -si backup.sql.7z

Ele deve ser colocado imediatamente após o argumento -p .

    
por 10.01.2018 / 16:26
0

Se você quiser usar pipes com o algoritmo 7zip, considere usar xz em vez de 7z.

O xz usa exatamente o mesmo algoritmo que o 7z, mas pode ser usado como o gzip (ou bzip2). xz e 7zip foram desenhados pelo mesmo autor.

mysqldump -u root -p Linux_Wiki | xz -9 > backup.sql.xz

A GUI do 7zip entende xz.

    
por 10.01.2018 / 17:23