Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Krijg cronjob niet aan de praat  (gelezen 823 keer)

Offline moxie

  • Lid
    • JackTummers
  • Steunpunt: Nee
Krijg cronjob niet aan de praat
« Gepost op: 2014/09/09, 20:05:18 »
Ik probeer een aantal backups via rsync in te stellen met cron, maar ze willen maar niet van start gaan.

Ik gebruik dit commando voor rsync en heb het als zodanig via sudo crontab -e toegevoegd:

00 19 * * * rsync -aurvt --delete --exclude=/.Trash-1000/ --exclude=/lost+found/  /media/Archief01/ /media/jack/Archief01A

Ik dacht eerst dat misschien de tijd niet overeenkwam met de systeem zoals ik kan zien, onder ander via het commando date, maar ik heb ook al het uur 19 vervangen door * (ieder uur) en ook de minuten heb ik al aangepast. Wat doe ik nog fout?

Ik heb overigens ook dit geprobeerd via een sh script volgens deze aanwijzingen, maar ook dat werkte niet: http://www.evbackup.com/support-rsync-scripting-automation/

JackTummers.nl

Offline moxie

  • Lid
    • JackTummers
  • Steunpunt: Nee
Re: Krijg cronjob niet aan de praat
« Reactie #1 Gepost op: 2014/09/09, 21:04:58 »
Ik geloof dat het nu werkt. Blijkbaar zat er een fout in de exlude regels van rsync.
JackTummers.nl

Offline Paul Matthijsse

  • Lid
  • Steunpunt: Nee
Re: Krijg cronjob niet aan de praat
« Reactie #2 Gepost op: 2014/09/09, 21:56:01 »
Hallo, volgens mij moeten die --exclude-regels van aanhalingstekens worden voorzien:--exclude="/.Trash-1000"
https://allesgimpofbijna.wordpress.com - GIMP en omstreken
https://paulsphotopalace.wordpress.com (Engelstalig) - Raw, RawTherapee, G'MIC, GIMP...

Offline Buzzin

  • Lid
  • Steunpunt: Nee
Re: Krijg cronjob niet aan de praat
« Reactie #3 Gepost op: 2014/09/10, 08:08:49 »
Overigens: waarom heb je deze cronjob in de cron van root gezet en niet in die van je eigen gebruiker?
sudo crontab -e = root's crontab, je kunt het ook gewoon zonder sudo doen
Football: A battle between two teams of mindless thugs over scraps of coloured cloth. Usually accompanied by the spectacle of 22 overpaid primadonnas kicking a ball on a field.
DebianDevuan, KDE & OperaVivaldi addict, RedHat Engineer

Offline moxie

  • Lid
    • JackTummers
  • Steunpunt: Nee
Re: Krijg cronjob niet aan de praat
« Reactie #4 Gepost op: 2014/09/10, 08:47:06 »
Dat is een goeie vraag! Ik wist het ook niet zeker maar kreeg zonder sudo een paar foutmeldingen dat sommige mappen of bestanden niet konden worden benaderd.
Ik wil dus behalve gewone bestanden ook mijn /home backuppen, inclusief dus alle verborgen bestanden en dus alle (programma)instellingen. Worden die ook meegenomen in een backup in cron zonder sudo?

En dan natuurlijk nog de vraag of ik dit nog kan veranderen. Als ik vanaf nu de backups via de gebruiker laten lopen in cron, geeft dat geen problemen met bestaande backups?

ps. ik heb zelf trouwens een TDM ;)
JackTummers.nl

Offline Buzzin

  • Lid
  • Steunpunt: Nee
Re: Krijg cronjob niet aan de praat
« Reactie #5 Gepost op: 2014/09/10, 10:26:51 »
Dan is er een kans dat niet alle bestanden in die folder van jou zijn, maar ooit door andere processen of personen zijn aangemaakt.
Dit kun je rectificeren door een sudo chown -R gebruiker:groep /pad te doen, maar ik zou eerst even kijken welke bestanden het zijn. (zeker weten dat het geen symlink naar een andere lokatie is, anders krijg je problemen)
Tenminste, dat is als je wilt dat alle bestanden van jou zijn.

Als je nu de sync zou starten als gebruiker zou het inderdaad kunnen zijn dat je daardoor problemen krijgt.
Ook dit is op te lossen door daar de rechten aan te passen, danwel de eerste keer de sync alsnog als root uit te voeren (deze overschrijft de bestaande rechten).

Je home directory zou helemaal van jou moeten zijn, dus die zou je zonder problemen moeten kunnen syncen.

Een ander punt: Je kunt de opties voor rsync nog wat finetunen:
-aurvt is een beetje dubbelop, uit de documentatie: -a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
oftewel, je kunt het afkorten naar -auv.
-v is verbose, niet heel nuttig voor een geautomatiseerd script (lijkt me in dit geval)
-u = niet kopieeren als de ontvangende kant nieuwer is (kan dit voorkomen in jouw geval?)
Zelf zou ik toevoegen: -x, --one-file-system       don't cross filesystem boundaries
zodat zelfs met een foute symlink, je niet per ongeluk alle disken meeneemt
Zelf zou ik dus 'rsync -ax' gebruiken...maar dat ben ik maar :)
Football: A battle between two teams of mindless thugs over scraps of coloured cloth. Usually accompanied by the spectacle of 22 overpaid primadonnas kicking a ball on a field.
DebianDevuan, KDE & OperaVivaldi addict, RedHat Engineer

Offline moxie

  • Lid
    • JackTummers
  • Steunpunt: Nee
Re: Krijg cronjob niet aan de praat
« Reactie #6 Gepost op: 2014/09/10, 20:44:36 »
Ik ga je tips eens doornemen :) bedankt. En zal van onderstaand -ax maken als dat net zo goed is.

En nu werkt mijn backup opeens niet meer. Kan het zijn dat ik iedere regel in mijn sh bestand moet afsluiten ofzo?

Ik heb nu dit:

#!/bin/sh
rsync -aurvt --delete --exclude=.gvfs  /home/ /media/Data/BackupHome
rsync -aurvt --delete /media/Data/ /media/jack/DataBackup
rsync -aurvt --delete /media/Archief01/ /media/jack/Archief01A
rsync -aurvt --delete /media/Archief02/ /media/jack/Archief02A
JackTummers.nl

Offline Moob

  • Lid
  • Steunpunt: Nee
Re: Krijg cronjob niet aan de praat
« Reactie #7 Gepost op: 2014/09/10, 21:24:50 »
Installeer anders eens Grsync. Dit is een GUI om rsync heen, kan je heel makelijk het een en ander testen.

Offline Buzzin

  • Lid
  • Steunpunt: Nee
Re: Krijg cronjob niet aan de praat
« Reactie #8 Gepost op: 2014/09/11, 08:28:17 »
zelf ben ik er een fan van om te beginnen met /bin/bash, omdat dat ook de schil is die je normaal gebruikt. /bin/sh reageert soms anders.
Verder hoef je een regel niet af te sluiten o.i.d. een enter is genoeg.
Je kunt na elke regel een echo doen, dan zie je waar het niet goed gaat...
dus 'echo Ik ben nu bij regel 1' etc.
Dat moet je natuurlijk weer eruit halen als ie als cronjob gaat lopen, maar voor testen is het handig
Football: A battle between two teams of mindless thugs over scraps of coloured cloth. Usually accompanied by the spectacle of 22 overpaid primadonnas kicking a ball on a field.
DebianDevuan, KDE & OperaVivaldi addict, RedHat Engineer

Offline Johan van Dijk

  • Administrator
    • johanvandijk
  • Steunpunt: Nee
Re: Krijg cronjob niet aan de praat
« Reactie #9 Gepost op: 2014/09/11, 09:25:45 »
In een cronjob moet je er ook rekening mee houden dat de PATH variabele niet altijd gedefinieerd is.
Gebruik dus altijd de volledige paden naar commando's.
Dus "/usr/bin/rsync enz" in plaats van "rsync enz".

Offline moxie

  • Lid
    • JackTummers
  • Steunpunt: Nee
Re: Krijg cronjob niet aan de praat
« Reactie #10 Gepost op: 2014/09/11, 10:01:00 »
Het pad in cron dat ik nu gebruik is dit:

35 20 * * * /home/Backups/backups.sh

Lijkt me goed toch?
JackTummers.nl

Offline Johan van Dijk

  • Administrator
    • johanvandijk
  • Steunpunt: Nee
Re: Krijg cronjob niet aan de praat
« Reactie #11 Gepost op: 2014/09/11, 10:20:53 »
Dat is goed, maar je moet binnen dat script ook de absolute paden zetten :)

Offline moxie

  • Lid
    • JackTummers
  • Steunpunt: Nee
Re: Krijg cronjob niet aan de praat
« Reactie #12 Gepost op: 2014/09/13, 21:32:22 »
Nog één vraagje dan... Hoe kan ik de uitvoer zien van een cronjob met rsync commando's?
Ik vind het namelijk wel fijn om even wat regels in de terminal voorbij te zien vliegen zodat ik zeker weet dat alles goed gaat.
JackTummers.nl

Offline Johan van Dijk

  • Administrator
    • johanvandijk
  • Steunpunt: Nee
Re: Krijg cronjob niet aan de praat
« Reactie #13 Gepost op: 2014/09/13, 21:42:06 »
Je zou de uitvoer van je script naar een logfile kunnen redirecten

35 20 * * * /home/Backups/backups.sh > /var/log/backups.log
Zorg ervoor dat het bestand bestaat en dat je rechten hebt om hem te beschrijven.

Je zou ook nog binnen je script de std err via een pipe naar het logger commando kunnen sturen.

Offline moxie

  • Lid
    • JackTummers
  • Steunpunt: Nee
Re: Krijg cronjob niet aan de praat
« Reactie #14 Gepost op: 2014/09/13, 21:53:01 »
Dat laatste ben ik niet bekend mee, maar ik ga dat eerste eens proberen.
Werkt het trouwens zo dat als ik mijn huidige 4 rsync regels via cron laat uitvoeren deze automatisch als root worden uitgevoerd? Ik heb er namelijk niet nog eens sudo voorgezet.
Ik gebruik hier sudo crontab -e voor.
JackTummers.nl

Offline Paul Matthijsse

  • Lid
  • Steunpunt: Nee
Re: Krijg cronjob niet aan de praat
« Reactie #15 Gepost op: 2014/09/13, 21:58:07 »
Nog één vraagje dan... Hoe kan ik de uitvoer zien van een cronjob met rsync commando's?
voeg na rsync de -v optie toe, van verbose. In de terminal zie je dan precies wat er gebeurt. Of dat ook zo is met cron weet ik niet.

Edit. Ik zie nu dat je die -v al hebt geactiveerd, dus misschien moet de uitvoer mogelijk inderdaad redirecten zoals Johan schreef.
« Laatst bewerkt op: 2014/09/13, 22:00:02 door Paul Matthijsse »
https://allesgimpofbijna.wordpress.com - GIMP en omstreken
https://paulsphotopalace.wordpress.com (Engelstalig) - Raw, RawTherapee, G'MIC, GIMP...

Offline moxie

  • Lid
    • JackTummers
  • Steunpunt: Nee
Re: Krijg cronjob niet aan de praat
« Reactie #16 Gepost op: 2014/09/13, 22:02:37 »
Ja, die -v werkte leuk als ik rsync meteen in de terminal uitvoerde, maar nu ik aan het proberen ben via cron automatisch iedere dag 4 soorten backup te laten lopen zie ik niks meer gebeuren op mijn scherm, en ik zou op zijn minst toch een popupje of iets willen zien met wat er gebeurd.
JackTummers.nl

Offline MKe

  • Lid
  • Steunpunt: Nee
Re: Krijg cronjob niet aan de praat
« Reactie #17 Gepost op: 2014/09/13, 22:20:04 »
De redirect naar een logbestand zoals Johan aangeeft is de standaard manier. Beter nog is het om het met een dubbele '>>' te doen, dan wordt het log van de vorige keer niet overschreven. Je kunt altijd in het logbestand zien dat er wat gebeurt.
Cron runt de commando's in een eigen, onzichtbare shell. Dat zie je dus niet terug op een schermpje.

Offline moxie

  • Lid
    • JackTummers
  • Steunpunt: Nee
Re: Krijg cronjob niet aan de praat
« Reactie #18 Gepost op: 2014/09/13, 22:23:07 »
Ok. En wat die sudo betreft?

Werkt het trouwens zo dat als ik mijn huidige 4 rsync regels via cron laat uitvoeren deze automatisch als root worden uitgevoerd? Ik heb er namelijk niet nog eens sudo voorgezet.
Ik gebruik hier sudo crontab -e voor.
JackTummers.nl

Offline MKe

  • Lid
  • Steunpunt: Nee
Re: Krijg cronjob niet aan de praat
« Reactie #19 Gepost op: 2014/09/14, 09:55:54 »
Iedere gebruiker heeft zijn eigen cron. Je kunt dus taken laten uitvoeren door je eigen user, maar als je sudo crontab -e uitvoert krijg je een andere lijst met taken. De taken die je hier in zet worden als root uitgevoerd.

Het simpele antwoord is dus als je sudo crontab -e hebt gebruikt, dat je taak dus als root wordt uitgevoerd.
« Laatst bewerkt op: 2014/09/14, 10:03:53 door MKe »
Mijn blokkendoos blog: http://mke21.wordpress.com/

Offline jan11000

  • Lid
  • Steunpunt: Nee
Re: Krijg cronjob niet aan de praat
« Reactie #20 Gepost op: 2014/09/14, 10:25:58 »
Dit in je tekst zetten,
#!/bin/bash
Dus in plaats wat jij hebt, of dit moet weet ik niet, maar dit gebruikte ik altijd.

Je hebt nu meerdere regels die direct starten, door ; achter elke regel te zetten, dan start de volgende pas als de eerte klaar is.
Met sleep 10 nog als regel ertussen te voegen, dan heb je een kleine pauze tussen de stappen.
Met echo "ready" kun je nog tekst laten zien, tekst kun je wijzigen, dan kun je ook zien dat je programma loopt.

Voorbeeld wat ik gebruik, na het opstarten van het systeem, gaat dit starten, even wacht de bash, dan start deze, met pauzes ertussen, en de bash wordt 1 voor 1 gedaan, dus niet samen, ik zie dit ook aflopen in de terminal scherm die tevoorschijn komt, want anders weet je niet op deze bash gelopen heeft, en voor een backup is het wel belangrijk dat je weet dat dit gelopen heeft.
Hier maak een copie van bepaalde mappen bij opstarten, je kunt ook een knop maken en aan je sh verbinden.
#!/bin/bash
echo "wait ............................................."
echo "wait ............................................."
echo "wait ............................................."
echo "wait ............................................."
sleep 10
rsync -r -t -v --progress --delete -b -s /home/jan/.mozilla /home/jan/2/backup/firefoxmap ;
echo "ready 1111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111" ;
rsync -r -t -v --progress -c -b -s /home/jan/.thunderbird /home/jan/2/backup/emailmap ;
echo "ready 2222222222222222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222
22222222222222222222222222222222222222222222222222222222" ;
rsync -r -t -v --progress --delete --ignore-existing -b -s /home/jan/1/download /home/jan/2/backup/downloadmap ;
echo "ready 3333333333333333333333333333333333333333333
33333333333333333333333333333333333333333333333333333333
33333333333333333333333333333333333333333333333333333333" ;
echo "Ready"
echo "wait ............................................."
sleep 10


« Laatst bewerkt op: 2014/09/14, 10:28:05 door jan11000 »

Offline moxie

  • Lid
    • JackTummers
  • Steunpunt: Nee
Re: Krijg cronjob niet aan de praat
« Reactie #21 Gepost op: 2014/09/14, 11:30:19 »
Zien er goed uit doe regeltjes ;)

Ik heb er nu dit van gemaakt in mijn backups.sh

#!/bin/sh
echo "Start van backup Home folder naar Data/Backup";
rsync -aurvt --progress --delete --exclude=/home/jack/.gvfs  /home/jack/ /media/jack/Data/BackupHome ;
echo "Einde eerste backup ---------------------------------------------------------";
sleep 5;

echo "Start van backup Data folder naar DataBackup op Mobius";
rsync -aurvt --progress --delete --exclude=/media/jack/Data/Downloads/ /media/jack/Data/ /media/jack/DataBackup ;
echo "Einde tweede backup ---------------------------------------------------------";
sleep 5;

echo "Start van backup Archief01 naar Archief01A op Mobius";
rsync -aurvt --progress --delete --exclude=/media/jack/Archief01/.Trash-1000 --exclude=/media/jack/Archief01/lost+found /media/jack/Archief01/ /media/jack/Archief01A ;
echo "Einde derde backup ---------------------------------------------------------";
sleep 5;

echo "Start van backup Archief02 naar Archief02A op Mobius";
rsync -aurvt --progress --delete --exclude=/media/jack/Archief02/.Trash-1000 --exclude=/media/jack/Archief02/lost+found /media/jack/Archief02/ /media/jack/Archief02A ;
echo "Einde vierde backup ---------------------------------------------------------";
echo "Klaar met backuppen ---------------------------------------------------------";

Alleen is me niet duidelijk hoe jij dan ziet wat er gaande is. De terminal opent niet ofzo, dus ik zie alleen maar de lichtjes van de harddisks oplichten.
Heb jij inderdaad > /var/log/backups.log achter je cron-regel gezet?

JackTummers.nl

Offline moxie

  • Lid
    • JackTummers
  • Steunpunt: Nee
Re: Krijg cronjob niet aan de praat
« Reactie #22 Gepost op: 2014/09/14, 15:19:14 »
Iets klopt er nog niet in wat ik probeer te doen.
In eerste instantie werkte de exclude van de downloadsmap niet, dus die werd 'netjes' gebackupt, wat ik dus eigenlijk niet wilde.

Toen ben ik gaan kijken naar de juiste formulering en denk die te hebben (zie onderstaande regels), alleen werd de downloadsmap op de target schijf niet gewist en heb ik dit uiteindelijk handmatig moeten doen. Ik dacht dat alles wat op de doelschijf staat automatisch gewist zou worden wat niet op de bronschijf staat. Toch?

#!/bin/sh
echo "Start van backup Home folder naar Data/Backup" ;
rsync -aurvt --delete --exclude '.gvfs' --exclude '.local/share/Trash'  /home/jack/ /media/jack/Data/BackupHome ;
echo "Einde eerste backup ---------------------------------------------------------" ;

echo "Start van backup Data folder naar DataBackup op Mobius" ;
rsync -aurvt --delete --exclude 'Downloads' /media/jack/Data/ /media/jack/DataBackup ;
echo "Einde tweede backup ---------------------------------------------------------" ;

echo "Start van backup Archief01 naar Archief01A op Mobius" ;
rsync -aurvt --delete --exclude '.Trash-1000' --exclude 'lost+found' /media/jack/Archief01/ /media/jack/Archief01A ;
echo "Einde derde backup ---------------------------------------------------------" ;

echo "Start van backup Archief02 naar Archief02A op Mobius" ;
rsync -aurvt --delete --exclude '.Trash-1000' --exclude 'lost+found' /media/jack/Archief02/ /media/jack/Archief02A ;
echo "Einde vierde backup ---------------------------------------------------------" ;
echo "Klaar met backuppen ---------------------------------------------------------" ;
JackTummers.nl

Offline Johan van Dijk

  • Administrator
    • johanvandijk
  • Steunpunt: Nee
Re: Krijg cronjob niet aan de praat
« Reactie #23 Gepost op: 2014/09/14, 16:30:35 »
Een cronjob laat nooit wat op je scherm zien. Dat zou ook wel raar zijn omdat sommige iedere paar minuten lopen. Dan zou je niet meer normaal kunnen werken zonder continu gestoord te worden door popups.

Als je wil weten wat een cronjob doet dan moet je de logbestanden bekijken.