Shell / Bash - Skript zum Fortsetzen vor dem Zeilenende wird ausgeführt

Shell / Bash - Skript zum Fortsetzen vor dem Zeilenende wird ausgeführt

Ich habe eine Shell/Bash, die perfekt zum Erstellen von Backup-Skripten funktioniert. Das Problem ist, dass ich große Dateien habe, die beim Ausführen des Skripts Probleme bereiten. Das Skript muss die Datei im tar.gzFormat q komprimieren und tut dies, aber wenn sie 6 GB + erreicht oder das Skript mit der Komprimierung der Datei fortfährt, aber in den nächsten Zeilen fehlschlägt, muss der Server ein set_time_limit;gleichwertiges PHP haben. Die PHP-Datei, die die Shell/Bash aufruft, die ich verwende set_time_limit (0);und die sehr gut funktioniert, hat die Shell/Bash auch etwas?

Das Skript:

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

Ich habe die Variablen nicht gepostet, weil ich denke, dass es nicht notwendig ist

Bevor er fertig ist tar entfernt es die 2 Dateien mit den letzten Zeilen ... wenn die Datei weniger als etwa 6GB oder 7GB ist es nicht passieren, dies

Antwort1

Zunächst wäre es praktisch zu wissen, wie Sie Ihr PHP-Skript aufrufen. Zweitens können Sie den MySQL-Dump nicht vom PHP-Skript ausführen lassen, sondern von Ihrem Bash-/Shell-Skript, und Ihr PHP-Skript ruft es dann lediglich auf.

Da Ihr PHP-Skript nun eine Verbindung zu MySQL herstellt, können Sie mit minimalen Änderungen an Ihrem aktuellen Skript Folgendes tun: Anstatt Ihr PHP-Skript auf das Bash-Skript warten zu lassen, lassen Sie PHP einfach das Bash-Skript aufrufen und vergessen Sie es. Auf diese Weise müssen Sie sich keine Gedanken darüber machen, wie lange es dauert.

Lassen Sie in Ihrem Bash-Skript eine Zeile in MySQL aktualisieren, die angibt, ob die Komprimierung erfolgreich war oder fehlgeschlagen ist. Wenn Sie den Dump von Ihrem Bash-Skript ausführen lassen, ist dies sicherer, als wenn Sie dies von einem PHP-Skript tun lassen. Ihre Anmeldeinformationen für die Datenbank sind niemals über das Internet zugänglich. Außerdem empfehle ich, auch für PHP einen privaten Schlüssel für SSH zu generieren. Dann können Sie PHP später mit einem anderen Skript einfach danach prüfen lassen und dann einige andere Dinge tun, z. B. visuell melden, dass es erfolgreich war usw., indem Sie die Datenbank auf die Ergebnisse prüfen.

Es gibt viele verschiedene Möglichkeiten, dies zu lösen, von der Verwendung von PHP mit einigen verschiedenen Skripten über die Verwendung von Bash, um mehr Dinge zu tun, bis hin zur Einbindung anderer Sprachen wie JavaScript, um die dynamische Aktualisierung Ihrer Seite für die Ergebnisse zu unterstützen, sodass Sie sie nicht aktualisieren müssen usw. usw.

verwandte Informationen