Copy File von Raspi nach Synology mit Crontab funktioniert nicht

Ludwig68

Benutzer
Mitglied seit
25. Feb 2022
Beiträge
1
Punkte für Reaktionen
0
Punkte
1
Hi all,

ich bin neu im Forum und habe folgende Frage:
Ich habe einen Raspberry Pi von dem ich stündlich eine Datei auf meine Synology kopieren möchte.

NFS-Server auf der Synology läuft, ein Export ist auf meinem Raspberry gemountet

pi@pi:~/folderXYZ $ showmount -e my-synology
Export list for my-synology:
/volume1/pi-backup 192.168.178.10


/etc/fstab
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for that
my-synology:/volume1/pi-backup /BACKUP nfs defaults,rw,users 0 0


Ein Copy des Files manuell funktioniert auch:
cp /home/pi/myfolder/*.bck /BACKUP/

Jetzt versuche ich den Copy über Crontab zu automatisieren, dies funktioniert allerdings nicht und ich habe keine Ahnung warum.
Inhalt der crontab -e
35 * * * * cp /home/pi/myfolder/mybackupfile.bck /BACKUP/`date +%y%m%d_%H%M`_mybackupfile.bck

Any Idea?
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.306
Punkte für Reaktionen
2.865
Punkte
423
Fehlt da nicht die Angabe des Users in der crontab-Zeile? War doch grad Thema hier.
 

synpi

Benutzer
Mitglied seit
29. Jun 2016
Beiträge
280
Punkte für Reaktionen
14
Punkte
18
Ein Copy des Files manuell funktioniert auch:
cp /home/pi/myfolder/*.bck /BACKUP/

Jetzt versuche ich den Copy über Crontab zu automatisieren, dies funktioniert allerdings nicht und ich habe keine Ahnung warum.
Inhalt der crontab -e
35 * * * * cp /home/pi/myfolder/mybackupfile.bck /BACKUP/`date +%y%m%d_%H%M`_mybackupfile.bck

Das sind 2 unterschiedliche Aufrufe, ich frage nach dem 2ten...

Was zeigt crontab -l ?
 

tproko

Benutzer
Sehr erfahren
Mitglied seit
11. Jun 2017
Beiträge
2.101
Punkte für Reaktionen
253
Punkte
129
Wie @Benares schon sagte.
Gib einen User an im crontab.

Und sonst einfach mal ins cron log schauen (/var/log).

Wann löscht du die alten Backups? Solltest du evt. auch andenken.
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
586
Punkte
174
Ahhh den Fehler liebe ich, weil er mir früher auch schon häufig geschehen ist und so etwas prägt sich ein.

@mueke Das einzige was du tun musst ist das Prozent Zeichen zu escapen mit einem Backslash "\".

Somit sollte deine Zeile wie folgt aussehen:
35 * * * * cp /home/pi/myfolder/mybackupfile.bck /BACKUP/`date +\%y\%m\%d_\%H\%M`_mybackupfile.bck
 
Zuletzt bearbeitet:

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.306
Punkte für Reaktionen
2.865
Punkte
423
Da fehlt aber leider immer noch der User :rolleyes:
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
586
Punkte
174
@Benares weshalb fehlt da ein User?
In all meinen Cronjobs wird kein User angegeben außer der Job soll explizit von einem bestimmten user ausgefürht werden.
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.306
Punkte für Reaktionen
2.865
Punkte
423
Ich kenn das nur so, dass da bei "who" jeweils auch ein user angegeben wird, unter dem der jeweilige Job laufen soll. Meist ist das root.

Code:
root@DS415:~# cat /etc/crontab
MAILTO=""
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin
#minute hour    mday    month   wday    who     command
#20     0       *       *       *       root    /usr/syno/bin/timebkp recycle_all
0       0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23   *       *       *       root    /usr/syno/bin/synoschedtask --run id=3
15      0       *       *       1,4     root    /usr/syno/bin/synoschedtask --run id=1
0       0       24      *       *       root    /usr/syno/bin/synoschedtask --run id=4
0       0       *       *       6       root    /usr/syno/bin/synoschedtask --run id=6

Siehe den Link unter #3, wo der jeweilige Job einfach nicht ausgeführt wurde, wenn diese Angabe fehlt.
 
Zuletzt bearbeitet:

mueke

Benutzer
Mitglied seit
19. Aug 2017
Beiträge
7
Punkte für Reaktionen
0
Punkte
1
Ich habe mal ein wenig weiter experimentiert und ins Syslog geschaut, der Fehler hängt wohl mit dem Zeitstempel zusammen, den ich vergeben möchte:

Ohne Zeitstempel
Feb 25 22:33:10 mypi crontab[3033]: (root) BEGIN EDIT (root)
Feb 25 22:33:39 mypi crontab[3033]: (root) REPLACE (root)
Feb 25 22:33:39 mypi crontab[3033]: (root) END EDIT (root)
Feb 25 22:34:01 mypi cron[1659]: (root) RELOAD (crontabs/root)
Feb 25 22:35:01 mypi CRON[3093]: (root) CMD (cp /home/pi/myfolder/*.bck /BACKUP)

Mit Zeitstempel
Feb 25 22:35:49 mypi crontab[3106]: (root) BEGIN EDIT (root)
Feb 25 22:37:28 mypi crontab[3106]: (root) REPLACE (root)
Feb 25 22:37:28 mypi crontab[3106]: (root) END EDIT (root)
Feb 25 22:38:01 mypi cron[1659]: (root) RELOAD (crontabs/root)
Feb 25 22:40:01 mypi CRON[3132]: (root) CMD (cp /home/pi/myfolder/*.bck /BACKUP/`date +)
Feb 25 22:40:01 mypi CRON[3131]: (CRON) info (No MTA installed, discarding output)
 

Benares

Benutzer
Sehr erfahren
Mitglied seit
27. Sep 2008
Beiträge
12.306
Punkte für Reaktionen
2.865
Punkte
423
Was bedeutet mit/ohne Zeitstempel? :unsure:
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
586
Punkte
174
@Benares Aber du bist gerade auf der Syno unterwegs und die cronjobs sind da etwas anders angelegt.

Das was aber hier zur Debatte steht ist ein Raspberry und so wie es aussieht nach einem RaspbianOS (Debian). Indiz hierfür ist der Pfad zum Home Verzeichnis des Users „pi“ /home/pi

Auf einem Linux wie z.B. Debian, Ubuntu wird der crontab im Kontext des eigenen Users wie folgt erstellt.
crontab -e
Wenn man für einen anderen User einen crontab definieren möchte, dann legt man diesen mit Angabe des Users an.
crontab -u <user> -e

Der cron ist bei Synology anders aber ähnlich implementiert bei dem natürlich auch der User in der Tabelle vorkommt.
 

luddi

Benutzer
Sehr erfahren
Mitglied seit
05. Sep 2012
Beiträge
3.242
Punkte für Reaktionen
586
Punkte
174

mueke

Benutzer
Mitglied seit
19. Aug 2017
Beiträge
7
Punkte für Reaktionen
0
Punkte
1
@luddi : Das wars :) Der Tipp aus #7
Das einzige was du tun musst ist das Prozent Zeichen zu escapen mit einem Backslash "\".

Somit sollte deine Zeile wie folgt aussehen:
35 * * * * cp /home/pi/myfolder/mybackupfile.bck /BACKUP/`date +\%y\%m\%d_\%H\%M`_mybackupfile.bck

Thx @luddi , ich gebe dir nen virtuellen :coffee: aus
 

mueke

Benutzer
Mitglied seit
19. Aug 2017
Beiträge
7
Punkte für Reaktionen
0
Punkte
1
Wie @Benares schon sagte.
Gib einen User an im crontab.

Und sonst einfach mal ins cron log schauen (/var/log).

Wann löscht du die alten Backups? Solltest du evt. auch andenken.
@tproko Backups lösche ich mit:

30 * * * * find /BACKUP -name "*.bck" -type f -mtime +1 -delete

Wobei die 1 erstmal zum testen ist, schraube das dann entsprechend auf 60 Tage hoch
 

tproko

Benutzer
Sehr erfahren
Mitglied seit
11. Jun 2017
Beiträge
2.101
Punkte für Reaktionen
253
Punkte
129
Ok. Ich würde eigene .sh Skripte machen (chmod +x nicht vergessen).

Das finde ich besser lesbar als alles in die crontab rein zupacken.
 


 

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