Shell / Bash - Script para continuar antes do final da linha estar em execução

0

Eu tenho um shell / bash que funciona perfeitamente para fazer o script de backups, o problema é que eu tenho arquivos grandes que estão dando problemas para executar o script. O script tem q comprimir o arquivo em tar.gz format e ele faz, mas quando chega em 6GB + ou o script continua comprando o arquivo mas vai nas próximas linhas e os backups falham, o servidor deve ter um set_time_limit; igual em php, o arquivo php que chama o shell / bash eu uso set_time_limit (0); e funciona muito bem, o shell / bash tem algo também?

O script:

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

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

Antes dele terminar tar ele remove os 2 arquivos com as linhas finais ... se o arquivo for menor que cerca de 6GB ou 7GB isso não acontece isso

    
por Alan PS 09.08.2016 / 22:12

1 resposta

0

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

Agora, desde que você tenha seu script php conectado ao mysql, o que você poderia fazer com a modificação mínima do seu script atual. Em vez de ter o seu script php, espere no script bash. Basta fazer com que o php invoque o script bash e esqueça-o desta maneira, você não precisa se preocupar com quanto tempo demora.

Em seu script bash, faça com que ele atualize uma linha no mysql dizendo que ele foi bem-sucedido ou falhou após sua compactação e se você tiver seu script bash fazendo o dump ele seria mais seguro do que ter um script php fazendo IE, seu credenciais para o DB nunca serão acessíveis pela web, assim como eu recomendo gerar uma chave privada para o ssh para php também. Então você poderia apenas fazer o php checá-lo mais tarde com um script diferente e então fazer algumas outras coisas, como reportar visualmente que ele foi bem sucedido, etc., verificando o DB para os resultados.

Existem muitas maneiras diferentes de resolver isso, desde usar PHP com poucos scripts diferentes, usar o bash para fazer mais coisas, até mesmo incluir outras linguagens como o javascript para ajudar a atualizar dinamicamente sua página para os resultados, para que você não use t tem que atualizar etc etc.

    
por 10.08.2016 / 00:50

Tags