Ich habe grundlegende. SH-Skript zur Erstellung von Nacht-Backups. Der gesamte Code ist:Logging/find Fehler in. SH-Skript
#!/bin/bash
DATE=`date +%Y%m%d`
tar czfP /var/www/backup/$DATE.tar.gz `find /var/www/web -type d | grep -E '/var/www/web/web[0-9]+/web' | grep -v 'web1'`
Es macht mich $DATE.tar.gz
Datei aller Bahnen auszuschließen "web1". Es funktioniert richtig, bis heute.
Wenn ich dieses Skript manuell in der Konsole ausführen (nicht mit Cron), sehe ich alle Warnungen ("No such file or directory"
, in der Regel, wenn dirname/Dateiname ein Leerzeichen im Namen hat). Es ist okay, ich kann damit nichts anfangen, Clients erstellen selbst Dateien. Diese Dateien haben kein Backup mehr, denke ich.
Heute endet der Skriptlauf jedoch in 1/3 mit der Fehlermeldung Exiting with failure status due to previous errors
. Ich weiß nicht, wo das Skript fehlschlägt, also ...
Gibt es eine Möglichkeit, wie der "Pfad/Dateiname" der letzten Fehlerdatei (verursacht "Exiting with failure status due to previous errors"
) in das Protokoll schreiben? Wenn möglich, können wir "Keine solche Datei oder Verzeichnis" -Fehler ausschließen, sie werden täglich dort sein, ohne die Möglichkeit, Dateinamen zu reparieren.
Dank
PS:
ich diese Fehlermeldung gelesen habe kann durch ungültige Benutzerberechtigungen verursacht werden. Wenn ja, kann ich die Berechtigungen überprüfen, aber ich muss wissen, wo das Skript fehlschlägt. Bis jetzt funktionierte es wirklich richtig, vor etwa 3 Jahren wurden alle Dateien von CMS erstellt (derselbe WWW-Benutzer), nichts wird manuell hochgeladen.
HI @Triple, thx für Ihre Antwort. "Um die tar-Fehler zu erfassen, würde ich vorschlagen, dass Sie die Fehlerausgabe in eine Datei umleiten, damit Sie sie in Ruhe lesen können." - Es ist wahrscheinlich, was ich suche, kannst du mir bitte sagen, wie? Ich habe 2> file.log gefunden, aber es funktioniert nicht für mich. Der Rest des Skripts ist nicht zufällig, ich verstehe es nicht und ich bin froh, dass es bis jetzt funktioniert hat :-) Ich denke, es ist besser, die Datei zu entfernen/zu reparieren, die das Ende des Skripts verursacht. – Roman
Es ist kaputt, du musst es ändern. Es ist nicht klar, wie '2> file.log'" nicht funktioniert "; Kannst du es ausarbeiten? – tripleee
Entschuldigung, ich weiß wirklich nicht, wie es funktioniert :-(, Ich bin Front-End-Entwickler. Ich fand zB. Https://www.cs.duke.edu/csl/docs/unix_course/intro-69. html (und andere, die einige sagen), versuchte ich 'tar czfP ... | grep -v 'web1' 2> file.log', um Fehler in vorhandenen Datei.log zu fangen. Das Skript nichts tun (ich habe nicht gesehen tar.gz Datei in meinem Server) Ich meine, es gibt kein Problem in der Regex oder alle auswählen und dann "web1" entfernen - es hat bis jetzt funktioniert, aber Ihre Lösung ist vielleicht besser. Jetzt muss ich welche Datei/Verzeichnis finden macht das Problem – Roman