Shell / Bash - Script para continuar antes do final da linha ser executado

Shell / Bash - Script para continuar antes do final da linha ser executado

Tenho um shell/bash que funciona perfeitamente para fazer backups do script, o problema é que tenho arquivos grandes que estão dando problemas na execução do script. O script tem q compactar o arquivo no tar.gzformato e ele faz isso, mas quando chega em 6GB+ ou o script continua compactando o arquivo mas vai nas próximas linhas e os backups falham, o servidor deve ter igual set_time_limit;em php, o php que chama o shell/bash que eu uso set_time_limit (0);e funciona muito bem, o shell/bash também tem alguma coisa?

O roteiro:

MYSQLDUMP="$(which mysqldump)"
$MYSQLDUMP -u $DBUSER -h $DBHOST -p$DBPASS $DBNAME | gzip > $TIMESTAMP.sql.gz

ssh $USER_SSH@$HOST_SSH "tar -zcf - $HOME" > $TIMESTAMP.backup.tar.gz

tar -zcf $TIMESTAMP.tar.gz $TIMESTAMP.backup.tar.gz $TIMESTAMP.sql.gz

SUCCESS=$?

rm $TIMESTAMP.sql.gz
rm $TIMESTAMP.backup.tar.gz

Não postei as variáveis ​​porque acho que não é necessário

Antes de terminar o tar ele remove os 2 arquivos com as linhas finais... se o arquivo tiver menos de 6GB ou 7GB isso não acontece

Responder1

Primeiro, seria útil saber como você está invocando seu script php. Em segundo lugar, em vez de fazer com que o script php faça o despejo do mysql, você pode fazer com que o script bash/shell faça isso e tudo o que o script php faz é invocá-lo.

Agora, como você tem seu script php conectado ao mysql, o que você poderia fazer com a modificação mínima em seu script atual. Em vez de deixar seu script php aguardar o script bash. Basta fazer com que o php invoque o script bash e esqueça isso, dessa forma você não precisa se preocupar com quanto tempo levará.

No seu script bash, atualize uma linha no mysql dizendo que foi bem-sucedido ou falhou após a compactação e se você tiver seu script bash fazendo o despejo, seria mais seguro do que ter um script php fazendo isso, ou seja, suas credenciais para o O banco de dados nunca estará acessível pela web e também recomendo gerar uma chave privada para ssh para php. Então você poderia simplesmente fazer o php verificar isso mais tarde com um script diferente e então fazer outras coisas como relatar visualmente que foi bem sucedido, etc., verificando os resultados no banco de dados.

Há muitas maneiras diferentes de resolver isso, desde usar PHP com alguns scripts diferentes, até usar bash para fazer mais coisas, até mesmo incluir outras linguagens como javascript para auxiliar na atualização dinâmica de sua página para os resultados, para que você não precise atualizar etc etc.

informação relacionada