Shell Script schreibt kein Log, wenn über Cronjob gestartet

Status
Für weitere Antworten geschlossen.

DerMetty

Benutzer
Mitglied seit
12. Sep 2015
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen!

Ich bin neu hier im Forum und stelle direkt mal meine erste Frage. Hoffentlich kann mir jemand von euch helfen. :)
Ich habe mit diesem Tutorial (http://www.felixdittgen.de/2014/11/...ed-to-remote-server-with-duply-and-duplicity/) erfolgreich IPKG und Duplicity auf meinem NAS installiert und ein erstes Backup erfolgreich zum Laufen gebracht.
Ich habe mir dann ein Shellscript geschrieben, welches ich in /etc/duply/scripts abgelegt habe und welches folgenden Inhalt hat:

Rich (BBCode):
/opt/bin/duply backupextern purge --force && /opt/bin/duply backupextern backup --allow-source-mismatch >> /volume1/homes/nas-admin/backup/logs/duply_backupextern_inc$(date "+%Y-%m-%dT%H:%M:%SZ").log

Führe ich das Shellscript via /etc/duply/scripts/backup.sh aus, rennt das Script los, und schreibt das Ergebnis in das angegebene Logfile. Läuft also wunderbar.
Wenn ich jetzt den Job in die Crontab schreibe, wird dieser anscheinend auch ausgeführt, allerdings kein Logfile geschrieben. Da drin steht nämlich folgendes:

Rich (BBCode):
Start duply v1.9.1, time is 2015-09-11 14:53:38.

Sorry. A fatal ERROR occured:

duplicity missing. installed und available in path?
PATH='/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin'

Ich weiß also nicht, ob der Job erfolgreich war oder ob es irgendwelche Probleme gab. Ich hab ne Menge gegooglet und ausprobiert, ich bekomms leider nie hin.
Das mit dem PATH macht für mich auch keinen Sinn, da ich im Script ja den absoluten Pfad von Duply angebe. Hat jemand von euch einen Tipp? Ich habe auch gelesen, dass die Crontab eine andere Bash verwendet, richtig?

Vielen Dank im Voraus!
Metty
 
Mitglied seit
10. Jan 2014
Beiträge
393
Punkte für Reaktionen
0
Punkte
0
Wahrscheinlich ruft duply das duplicity intern selbst auf, ohne absolute Pfadangabe.

Auf der Shell mal
type duply
type duplicity
ausführen und dann den Pfad (die Pfade) im Script an $PATH anhängen.
 

DerMetty

Benutzer
Mitglied seit
12. Sep 2015
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
Hi!

Das ist ein sehr guter Tipp. Jetzt gerade kann ich nicht darauf zugreifen, erst morgen wieder... (ich Experte!)
Aber ich würde den PATH dann direkt im Script anpassen?
Bspw:
Rich (BBCode):
PATH=$PATH:/path/to/duply:/path/to/duplicity
(Rest des Scriptes)
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.374
Punkte für Reaktionen
2.891
Punkte
423
Ja, es wird wohl am Pfad liegen.
Außerdem leite auch mal die Fehlerausgabe ins Log um (... > ...log 2>&1)
 

DerMetty

Benutzer
Mitglied seit
12. Sep 2015
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
Ich habe das Script nun angepasst:
Rich (BBCode):
PATH=$PATH:/opt/bin/duply:/opt/bin/duplicity
/opt/bin/duply backupextern backup --allow-source-mismatch > /volume1/homes/nas-admin/backup/logs/duply_ backupextern_inc_$(date "+%Y-%m-%dT%H:%M:%SZ").log 2>&1

Aber leider funktioniert das immer noch nicht, nun bekomme ich diesen Fehler im Log:
Rich (BBCode):
env: bash: Not a directory
Kann jemand von euch damit was anfangen? Beim manuellen Ausführen des Scripts funktioniert es immer noch...
 

MaCoM

Benutzer
Mitglied seit
06. Dez 2009
Beiträge
347
Punkte für Reaktionen
0
Punkte
0
Ich habe das Script nun angepasst:
Rich (BBCode):
PATH=$PATH:/opt/bin/duply:/opt/bin/duplicity
/opt/bin/duply backupextern backup --allow-source-mismatch > /volume1/homes/nas-admin/backup/logs/duply_ backupextern_inc_$(date "+%Y-%m-%dT%H:%M:%SZ").log 2>&1

ist PATH=$PATH:/opt/bin/duply:/opt/bin/duplicity ein verzeichniss ?
oder wie hier bein aufruf "/opt/bin/duply backupextern ....." ein programm ?
 

Joesix

Benutzer
Mitglied seit
08. Feb 2012
Beiträge
137
Punkte für Reaktionen
0
Punkte
0
$PATH = Pfad also immer ein Verzeichnis in dem dann die ausführbaren Dateien liegen
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
29.932
Punkte für Reaktionen
1.199
Punkte
754
Genauer gesagt ist es eine Umgebungsvariable, in der sich eine durch Doppelpunkt getrennte Liste von Pfaden befindet.
 

MaCoM

Benutzer
Mitglied seit
06. Dez 2009
Beiträge
347
Punkte für Reaktionen
0
Punkte
0
Was ich damit sagen wollte ist das "duply" entweder ein verzeichniss oder ein programm ist aber nicht beides !
also ist eine der beiden zeilen falsch.
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
29.932
Punkte für Reaktionen
1.199
Punkte
754
Richtig. /opt/bin/duply ist offensichtlich ein Programm und hat nichts in der PATH-Variablen zu suchen. Für duplicity gilt vermutlich das Gleiche. Die wird hier auch gar nicht benötigt, da das Programm mit komplettem Pfad aufgerufen wird.
 

DerMetty

Benutzer
Mitglied seit
12. Sep 2015
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
Okay, richtig. Also muss im PATH nur /opt/bin/ eingetragen werden, ja?
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
29.932
Punkte für Reaktionen
1.199
Punkte
754
Ja, wobei es in Deinem Skript - wie gesagt - redundant wäre.
 

DerMetty

Benutzer
Mitglied seit
12. Sep 2015
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
Aber für Duplicity anscheinend ncht. Ohne PATH bekomme ich ja den ersten Error, dass duplicity nicht definiert ist.
 

jahlives

Benutzer
Mitglied seit
19. Aug 2008
Beiträge
18.275
Punkte für Reaktionen
4
Punkte
0
ist denn duply eventuell "nur" ein Link auf duplicity? Falls ja mal probiert im Script direkt /opt/bin/duplicity zu verwenden?
 

DerMetty

Benutzer
Mitglied seit
12. Sep 2015
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
Nein, duply ist ein Programm, welches duplicity mit einigen Parametern aufruft. Eine Art Frontend quasi.
Zur Not muss ich auf duply verzichten und nur mit duplicity arbeiten...
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
29.932
Punkte für Reaktionen
1.199
Punkte
754
Wo liegt denn das duplicity-binary genau? Im Verzeichnis /opt/bin/duplicity? Nur dann würde Deine Definition der PATH-Variable helfen, falls duply duplicity ohne Pfad aufruft.
 

dil88

Benutzer
Contributor
Sehr erfahren
Mitglied seit
03. Sep 2012
Beiträge
29.932
Punkte für Reaktionen
1.199
Punkte
754
Dann solltest Du /opt/bin in die PATH-Variable im Skript aufnehmen.
 

DerMetty

Benutzer
Mitglied seit
12. Sep 2015
Beiträge
13
Punkte für Reaktionen
0
Punkte
0
Das habe ich gerade eben gemacht. Außerdem habe ich noch "duply" dem Benutzer Root via chown zugewiesen. Es scheint nun via Crontab zu klappen. Ich mache noch einen zweiten Test.
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat