bash über Cron

Hallo zusammen

ich stehe gerade auf dem Schlauch.
Ich möchte über Cronjob mehrere Verzeichnisse Archivieren lassen.
dies sieht in etwa so aus

tar czf /home/xxx1.tar.gz /home/xxx/xxx1
tar czf /home/xxx2.tar.gz /home/xxx/xxx2

dies klappt direktv in der Console auch super. wenn ich jedoch über einen Cronejob die bash starte in welcher die auflistung ist, bekomme ich:

: Cannot stat: No such file or directory
: Cannot stat: No such file or directory
: Cannot stat: No such file or directory
: Cannot stat: No such file or directory
: Cannot stat: No such file or directory.ch
: Cannot stat: No such file or directory
: Cannot stat: No such file or directoryik.ch
: Cannot stat: No such file or directory
: Cannot stat: No such file or directoryio.de
: Cannot stat: No such file or directory
: Cannot stat: No such file or directory
: Cannot stat: No such file or directory
: Cannot stat: No such file or directory
: Cannot stat: No such file or directory
: Cannot stat: No such file or directory
: Cannot stat: No such file or directorych
: Cannot stat: No such file or directoryobiasdarin.ch
: Cannot stat: No such file or directoryn.ch
: Cannot stat: No such file or directoryful.ch


was übersehe ich?
 
Ich verstehe die Frage nicht, gleich vorneweg, aber vielleicht sehe ich den Fehler trotzdem:

Dein cron ruft nicht die $PATH deiner .bashrc ab, darum müsstest du den Pfad von "tar" angeben zB:
Code:
/usr/local/bin/tar czf /home/xxx1.tar.gz /home/xxx/xxx1

Ist nur eine Vermutung!
 
Evtl. in der Crontab den Pfad zu /usr/local/bin noch hinzufügen??

Code:
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin
 
Ich habe eine Datei mit folgendem Inhalt

tar czf /home/crazylin/.backup/backups/web/daily/immo-service_daily-backup-$(date +%F-%T)./usr/bin/tar.gz /home/crazylin/www/immo-service.ch
tar czf /home/crazylin/.backup/backups/web/daily/realestate-sh_daily-backup-$(date +%F-%T)./usr/bin/tar.gz /home/crazylin/www/realestate-sh.ch
tar czf /home/crazylin/.backup/backups/web/daily/stadtgarage_daily-backup-$(date +%F-%T)./usr/bin/tar.gz /home/crazylin/www/stadtgarage.com

Diese starte ich über einen Cronjob: 15 0 * * * /home/crazylin/.backup/scripte/backup_daily

Dann bekomme ich jedoch nur den Fehler

[crazylin@s31:~] $ /home/crazylin/.backup/scripte/backup_daily
: Cannot stat: No such file or directory
: Cannot stat: No such file or directory
tar: Removing leading '/' from member names
[crazylin@s31:~] $


bei der letzten Zeile funktioniert das jedoch immer.

Edit: mit dem Pdad (/usr/bin/tar) funktioniert das auch nicht.
 
mhmm. abgesehen von /etc/crontab gibt es die Möglichkeit in /var/cron/tabs benutzspezifische crontabs anzulegen. Habe ich aber bisher nicht gemacht. Ich denke mal, dass man auch hier den Pfad "erweitern" kann...

was Deine Mail @tobiasdrin angeht - es wäre am besten, wenn die einfach Konstrukte aus der Standard Bourne Shell statt die bash verwendest...
 
Ich habe eine Datei mit folgendem Inhalt
Da fehlt die Interpreterangabe in der ersten Zeile des Skripts.
Außerdem erschließt sich der Sinn folgender Angabe nicht:
Code:
tar czf /home/crazylin/.backup/backups/web/daily/immo-service_daily-backup-$(date +%F-%T)./usr/bin/tar.gz

Was soll da das ./usr/bin/tar.gz am Ende?

Rob
 
Hallo und willkommen hier im Forum

Grundsätzlich muss man unterscheiden zwischen /etc/crontab und dem Befehl crontab. Was hast du verwendet? Ich würde die zweite Variante (User Crontab) empfehlen.

So legst du einen Job an:
Code:
crontab -e
Der Inhalt sollte so aussehen:
Code:
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin

15 0 * * * /home/crazylin/bin/backup_daily.sh
Mit crontab -l kannst du dir deine Jobs anzeigen.

Du kannst das ganze auch simulieren/testen:
Code:
env -i SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin HOME=/home/crazylin LOGNAME=crazylin /usr/home/crazylin/bin/backup_daily.sh
Weitere Infos stehen im Handbuch [1] [2]

Dein Skript sollte in der ersten Zeile folgendes verwenden:
Code:
#!/usr/bin/env sh

Gruss

[1] https://www.freebsd.org/doc/handbook/configtuning-cron.html
[2] https://www.freebsd.org/doc/de_DE.ISO8859-1/books/handbook/configtuning-cron.html
 
Da fehlt die Interpreterangabe in der ersten Zeile des Skripts.
Außerdem erschließt sich der Sinn folgender Angabe nicht:
Code:
tar czf /home/crazylin/.backup/backups/web/daily/immo-service_daily-backup-$(date +%F-%T)./usr/bin/tar.gz

Was soll da das ./usr/bin/tar.gz am Ende?

Rob
Hallo KobRheTilla

Tipfehler meinerseits. korrekt heist es:
tar czf /home/crazylin/.backup/backups/web/daily/immo-service_daily-backup-$(date +%F-%T).tar.gz /home/crazylin/www/immo-service.ch
tar czf /home/crazylin/.backup/backups/web/daily/realestate-sh_daily-backup-$(date +%F-%T).tar.gz /home/crazylin/www/realestate-sh.ch
tar czf /home/crazylin/.backup/backups/web/daily/stadtgarage_daily-backup-$(date +%F-%T).tar.gz /home/crazylin/www/stadtgarage.com
 
Gut.
Erstelle dir mal ein Skript mit folgenden Zeilen:

Code:
#!/usr/bin/env bash

echo $(date +%F-%T)

Und führe es aus.
Wie ist die Ausgabe?

Rob
 
Gut.
Erstelle dir mal ein Skript mit folgenden Zeilen:

Code:
#!/usr/bin/env bash

echo $(date +%F-%T)

Und führe es aus.
Wie ist die Ausgabe?

Rob
wenn ich das Script ausführe ergibt es einen Fehler.
über die Console bekomme ich ein Datum

[crazylin@s31:~] $ /home/crazylin/test
: No such file or directory
[crazylin@s31:~] 127 $ echo $(date +%F-%T)
2017-01-18-16:06:55
 
Achso, du hast wohl keine bash installiert, sondern nutzt die Shell des Systems.
Existieren die Verzeichnisse /home/crazylin/.backup/backups/web/daily usw.?

Rob
 
Achso, du hast wohl keine bash installiert, sondern nutzt die Shell des Systems.
Existieren die Verzeichnisse /home/crazylin/.backup/backups/web/daily usw.?

Rob
Ich habe das Problem gefunden.
ich erstelle die Dateien mit Notepad++
Wenn ich über die Dateien "dos2unix" laufen lasse, funktioniert es.
Ich habe wohl einen "Windows Zeilenabstand" gemacht

Aber ich Danke allen für Ihre mühen mir zu helfen.
 
Zurück
Oben