Shell / Bash - Скрипт для продолжения работы до конца строки

Shell / Bash - Скрипт для продолжения работы до конца строки

У меня есть shell / bash, который отлично подходит для создания скрипта резервного копирования, проблема в том, что у меня большие файлы, из-за которых возникают проблемы с запуском скрипта. Скрипт имеет q сжатие файла в tar.gzформате, и он это делает, но когда он достигает 6 ГБ + или скрипт продолжает сжимать файл, но он переходит в следующие строки и резервное копирование завершается неудачей, на сервере должен быть эквивалент set_time_limit;в php, файл php, который вызывает shell / bash, который я использую set_time_limit (0);и работает очень хорошо, у shell / bash тоже есть что-то?

Сценарий:

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

Я не стал размещать переменные, так как считаю, что это не нужно.

Перед тем, как закончить работу, tar удаляет 2 файла с последними строками... если файл меньше 6 ГБ или 7 ГБ, этого не происходит.

решение1

Во-первых, было бы полезно знать, как вы вызываете свой php-скрипт. Во-вторых, вместо того, чтобы php-скрипт делал дамп mysql, вы можете сделать так, чтобы ваш bash/shell-скрипт делал это, и все, что делает ваш php-скрипт, это вызывает его.

Теперь, когда ваш php-скрипт подключается к mysql, что вы можете сделать с минимальными изменениями в вашем текущем скрипте? Вместо того, чтобы ваш php-скрипт ждал bash-скрипт. Просто заставьте php вызвать bash-скрипт и забудьте об этом, таким образом вам не придется беспокоиться о том, сколько времени это займет.

В вашем скрипте bash сделайте так, чтобы он обновил строку в mysql, сообщая, что он был успешным или неудачным после завершения сжатия, и если ваш скрипт bash сделает дамп, это будет безопаснее, чем если бы это делал скрипт php. IE, ваши учетные данные для базы данных никогда не будут доступны через веб, а также я рекомендую сгенерировать закрытый ключ для ssh для php. Затем вы можете просто заставить php проверить его позже с помощью другого скрипта, а затем сделать что-то еще, например, визуально сообщить, что он был успешным и т. д., проверив результаты в базе данных.

Существует множество различных способов решения этой проблемы: от использования PHP с несколькими различными скриптами до использования bash для выполнения большего количества задач и даже включения других языков, таких как javascript, для динамического обновления страницы с результатами, чтобы вам не приходилось обновлять ее и т. д.

Связанный контент