ubuntuusers.de

Backup mit Cronjob

Status: Ungelöst | Ubuntu-Version: Ubuntu 23.04 (Lunar Lobster)
Antworten |

Pannelecker

Anmeldungsdatum:
24. Oktober 2023

Beiträge: Zähle...

Hallo

Habe einen UbuntuServer als VM mit Paperless laufen und will einen täglichen Backup des /archive Ordners machen um 04:00

Benutzer sind root und pegasus

diese Befehle funktionieren soweit über Shell

root

cp -R /Paperless/paperless-ngx/media/documents/archive/* /Paperless/Papermount

pegasus

sudo cp -R /Paperless/paperless-ngx/media/documents/archive/* /Paperless/Papermount (hier kommt noch eine Passwort Abfrage)

Mein Gedanke war es Cronjob laufen zu lassen

Wie wäre denn der richtige Befehl bzw Vorgehensweise?

00 4 * * * cp -R /Paperless/paperless-ngx/media/documents/archive/* /Paperless/Papermount

Der funktioniert nicht

LG

Doc_Symbiosis

Avatar von Doc_Symbiosis

Anmeldungsdatum:
11. Oktober 2006

Beiträge: 4444

Wohnort: Göttingen

Willkommen hier im Forum!

Probier bei cp mal den vollständigen Pfad, also /usr/bin/cp

Pannelecker

(Themenstarter)

Anmeldungsdatum:
24. Oktober 2023

Beiträge: 4

Doc_Symbiosis schrieb:

Willkommen hier im Forum!

Probier bei cp mal den vollständigen Pfad, also /usr/bin/cp

Habe den Befehl jetzt so in crontab von root übernommen

#PaperlessBackup

00 4 * * * /usr/bin/cp -R /Paperless/paperless-ngx/media/documents/archive/* /Paperless/Papermount

Es passiert nix

Gebe ich den Befehl ein in Shell führt er ihn aus und kopiert mir die Daten

Irgendwas fehlt noch:)

Natürlich mit einem Zeitnahen Befehl 30 14 * * *

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

wenn du das ganze als systemd Timer Unit laufen lässt statt mit dem älteren Cron bekommst du zumindest einen (oder mehrere) Logeinträge im Journal von systemd, die bei der Fehlersuche helfen.

Gruß, noisefloor

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

Nachtrag: im deutschen Raspi-Forum gibt's genau den gleichen Thread vom gleichen TE: https://forum-raspberrypi.de/forum/thread/59862-backup-mit-cronjob/

Da die Fehleranalyse dort weiter fortgeschritten ist als hier sollte vielleicht besser der andere Thread dort verfolgt werden.

BTW: solche Cross-Postings sind uncool, sofern man es nicht als Ziel hat, möglichst viele Leute gleichzeitig mit seinem Problem zu beschäftigen.

Gruß, noisefloor

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11229

Wohnort: München

Ich würde mir überlegen, ob das Globbing in der Cron-Umgebung funktionieren kann - da hat man ja standardmäßig keine normale Shell zur Verfügung - was man ändern kann: Cron (Abschnitt „Befehl-klappt-in-Skript-und-Shell-aber-nicht-im-Cronjob“).

Generell würde ich cron einfach seinen wohlverdienten Ruhestand gönnen und stattdessen Systemd/Service Units über Systemd/Timer Units ausführen lassen, dann wird das ganze deutlich besser nachvollziehbar.

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9384

Wohnort: Münster

Pannelecker schrieb:

[…]

00 4 * * * cp -R /Paperless/paperless-ngx/media/documents/archive/* /Paperless/Papermount 
  • In welche Datei hast Du das denn eingetragen? Und wie bist Du dabei vorgegangen?

  • Endet die Zeile mit einem Linefeed?

Pannelecker

(Themenstarter)

Anmeldungsdatum:
24. Oktober 2023

Beiträge: 4

kB schrieb:

Pannelecker schrieb:

[…]

00 4 * * * cp -R /Paperless/paperless-ngx/media/documents/archive/* /Paperless/Papermount 
  • In welche Datei hast Du das denn eingetragen? Und wie bist Du dabei vorgegangen?

Als sudo su root@ubuntupaperless:~# nano /etc/crontab

  • Endet die Zeile mit einem Linefeed?

denke nein

Doc_Symbiosis

Avatar von Doc_Symbiosis

Anmeldungsdatum:
11. Oktober 2006

Beiträge: 4444

Wohnort: Göttingen

Wenn Du die /etc/crontab verwendest, dann musst Du noch den Benutzernamen mit eintragen, unter dem das laufen soll:

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

Du kannst aber auch direkt die crontab von root bearbeiten:

sudo crontab -e 

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9384

Wohnort: Münster

Pannelecker schrieb:

[[…] Als sudo su root@ubuntupaperless:~# nano /etc/crontab

In der Systemdatei von Cron muss in jeder ausführbaren Zeile ein Benutzername angegeben werden, das hast Du nicht gemacht.

  • Endet die Zeile mit einem Linefeed?

denke nein

Dann ist das der 2. Fehler. Jede ausführbare Zeile in einer crontab muss mit einem Linefeed enden.

Pannelecker

(Themenstarter)

Anmeldungsdatum:
24. Oktober 2023

Beiträge: 4

seahawk1986 schrieb:

Ich würde mir überlegen, ob das Globbing in der Cron-Umgebung funktionieren kann - da hat man ja standardmäßig keine normale Shell zur Verfügung - was man ändern kann: Cron (Abschnitt „Befehl-klappt-in-Skript-und-Shell-aber-nicht-im-Cronjob“).

Generell würde ich cron einfach seinen wohlverdienten Ruhestand gönnen und stattdessen Systemd/Service Units über Systemd/Timer Units ausführen lassen, dann wird das ganze deutlich besser nachvollziehbar.

Habe mir das mal angeschaut......blicke da leider noch nicht durch:)

Doc_Symbiosis

Avatar von Doc_Symbiosis

Anmeldungsdatum:
11. Oktober 2006

Beiträge: 4444

Wohnort: Göttingen

Na, dann mach es doch mit der crontab.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17584

Wohnort: Berlin

Wenn Du die crontab nicht mit nano /etc/crontab, sondern mit crontab -e bearbeitest, dann bekommst Du einen Check auf korrekte Syntax der crontab.

Welche Shell verwendet cron?

1
2
#
*	*	*	*	*	echo $SHELL >> /home/stefan/testcron.log 

Bei 22.04 /bin/sh.

Funktioniert globbing in der crontab?

1
*	*	*	*	*	ls -d /home/stefan/tmp/* >> /home/stefan/testcron.log

Bei mir schon. ☺ Gibt es auch POSIX-Shells in denen Globbing nicht funktioniert?

Wird cp im Pfad gefunden?

1
*	*	*	*	*	echo $PATH >> /home/stefan/testcron.log 

Ergebnis:

1
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Nachvollziehbarkeit des alten Eisens cron:

1
2
#
*	*	*	*	*	bogus >> /home/stefan/testcron.log 2>&1

Man muss sicher davon ausgehen, dass die alten Unixknacker 50 Jahre lang cron genutzt haben, ohne dass sie je Nachvollziehbarkeit interessiert hätte.

1
/bin/sh: 1: bogus: not found
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
journalctl -S 2:45 -g cron
Okt 25 02:45:02 t530 cron[1866]: (stefan) RELOAD (crontabs/stefan)
Okt 25 02:45:02 t530 CRON[42784]: pam_unix(cron:session): session opened for user root(uid=0) by (uid=0)
Okt 25 02:45:02 t530 CRON[42785]: pam_unix(cron:session): session opened for user stefan(uid=1000) by (uid=0)
Okt 25 02:45:02 t530 CRON[42786]: pam_unix(cron:session): session opened for user stefan(uid=1000) by (uid=0)
Okt 25 02:45:02 t530 CRON[42789]: (stefan) CMD (bogus >> /home/stefan/testcron.log 2>&1 )
Okt 25 02:45:02 t530 CRON[42784]: pam_unix(cron:session): session closed for user root
Okt 25 02:45:02 t530 CRON[42785]: pam_unix(cron:session): session closed for user stefan
Okt 25 02:45:02 t530 CRON[42786]: pam_unix(cron:session): session closed for user stefan
Okt 25 02:45:37 t530 sudo[42820]:   stefan : TTY=pts/1 ; PWD=/media/stefan ; USER=root ; COMMAND=/usr/bin/find /var/l>
Okt 25 02:46:01 t530 CRON[42832]: pam_unix(cron:session): session opened for user stefan(uid=1000) by (uid=0)
Okt 25 02:46:01 t530 CRON[42833]: (stefan) CMD (bogus >> /home/stefan/testcron.log 2>&1 )
Okt 25 02:46:01 t530 CRON[42832]: pam_unix(cron:session): session closed for user stefan
Antworten |