У меня есть 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, для динамического обновления страницы с результатами, чтобы вам не приходилось обновлять ее и т. д.