Shell/Bash: script para continuar antes de que se ejecute el final de la línea

Shell/Bash: script para continuar antes de que se ejecute el final de la línea

Tengo un shell/bash que funciona perfectamente para hacer copias de seguridad del script, el problema es que tengo archivos grandes que están dando problemas al ejecutar el script. El script tiene q comprimir el archivo en tar.gzformato y lo hace, pero cuando viene en 6GB+ o el script sigue comprimiendo el archivo pero va en las siguientes líneas y los respaldos fallan, el servidor debe tener un set_time_limit;igual en php, el php que llama al shell/bash que uso set_time_limit (0);y funciona muy bien, ¿el shell/bash también tiene algo?

La secuencia de comandos:

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

No publiqué las variables porque creo que no es necesario.

Antes de terminar tar elimina los 2 archivos con las líneas finales... si el archivo tiene menos de unos 6GB o 7GB no sucede esto

Respuesta1

Primero, sería útil saber cómo está invocando su script php. En segundo lugar, en lugar de que el script php realice el volcado de mysql, puede hacer que su script bash/shell lo haga y todo lo que haga su script php sea invocarlo.

Ahora que tiene su script php conectado a mysql, ¿qué podría hacer con una modificación mínima en su script actual? En lugar de hacer que su script php espere el script bash. Simplemente haga que php invoque el script bash y olvídese de él, de esta manera no tendrá que preocuparse por cuánto tiempo llevará.

En su script bash, haga que actualice una fila en mysql que diga que tuvo éxito o falló después de terminar de comprimir y si su script bash realiza el volcado, sería más seguro que tener un script php haciéndolo, es decir, sus credenciales para el Nunca se podrá acceder a DB a través de la web y también recomiendo generar una clave privada para ssh para php. Luego, podría hacer que PHP lo verifique más tarde con un script diferente y luego hacer otras cosas, como informar visualmente que fue exitoso, etc., verificando los resultados en la base de datos.

Hay muchas formas diferentes de resolver esto, desde usar PHP con algunos scripts diferentes, hasta usar bash para hacer más cosas, e incluso incluir otros lenguajes como javascript para ayudar a actualizar dinámicamente su página para obtener los resultados, de modo que usted no tenga que hacerlo. actualizar, etc., etc.

información relacionada