GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo usar Gzip solo si Thesqldump no da error?

Quiero comprimir el volcado de sql si y solo si mysqldump no produce ningún error. Trato de poner la contraseña incorrecta, pero todavía ejecuta el gzip.

 mysqldump -u username -ppassword dbname |& if [ $? == 0 ]; then gzip > test.gz; else echo "error"; fi

¿Qué pasa con mi comando o hay alguna solución mejor?

Respuesta aceptada:

Creo que podrías eliminar |& (La razón es que no necesita canalizar ni stdout ni stderr en el siguiente condicional, en todo caso, puede usar ';' como separador de comando). Algo como esto probablemente debería funcionar:

#!/bin/bash
mysqldump -u myuser -p mypasswd > mydb.dump
if [[ $? -eq 0 ]]; then
    gzip mydb.dump
else 
    echo >&2 "DB backup failed" 
    exit 1
fi

Editar:para verificar el éxito del gzip, podría hacer algo como esto:

mysqldump -u myuser -p mypasswd | gzip > mydb.dump.gz && echo "success" || echo "failure" 

Sin embargo, esto reportaría el éxito incluso si mysqldump falló, es decir, si la copia de seguridad falló por la mayoría de las razones que no sean gzip llenando el disco.


Linux
  1. Cómo resolver:stdin:no en formato gzip

  2. Cómo corregir un error de Comando no encontrado en Linux

  3. Cómo corregir el error:qemu:¿no se pudo cargar el BIOS de la PC 'bios.bin'?

  4. El archivo de metadatos no coincide con la suma de verificación:¡error YUM!

  5. ¿Cómo filtrar el registro de Dmesg para ver solo los errores?

Cómo solucionarlo:el usuario no está en el error del archivo sudoers

Cómo corregir el error 'El repositorio no tiene un archivo de lanzamiento' en Ubuntu

Cómo solucionar el error "El repositorio no tiene un archivo de versión" en Ubuntu

Cómo arreglar las conexiones de los trabajadores no son suficientes errores en Nginx

Cómo solucionarlo:el comando curl no encontró un error

Cómo configurar Chroot SFTP en Linux (Permitir solo SFTP, no SSH)