Sicherung von Cronjobs in Backupskript

  • Ich wollte gerade Crontabs bearbeiten und habe dabei aus Versehen "-r" anstatt "-e" verwendet. Womit die Cronjobs gelöscht wurden :rolleyes: Da ich keine Sicherung hatte, musste ich die Cronjobs händisch über /var/log/cron wiederherstellen :(

    Ich habe nun kurzer Hand die Sicherung der Cronjobs mit in die Backupskripte aufgenommen. Denke dies wird für den Einen oder Anderen sicherlich auch hilfreich sein :S


    /opt/pdadmin/bin/backup_user.sh

    Code
    Zeile 43: crontab -u $USER -l > $BACKUPDIR/user/$USER/$ROTATION/crontab.dump

    /opt/pdadmin/bin/backup_system.sh

    Code
    Zeile 48: crontab -l > $BACKUPDIR/system/$ROTATION/crontab.dump
  • Hallo,


    was hältst Du davon?

    auf dem Server speichern und den Patch dann wie folgt anwenden:

    Bash
    cd /opt/pdadmin
    patch -p0 </PATH/TO/crontab_to_backup.diff
  • Diff: crontab_to_backup.diff
    +nice -n 19 setuidgid $USER tar --preserve-permissions $PARM_EXCLUDE -czf $BACKUPDIR/user/$USER/$ROTATION/backup.tar.gz $HOME crontab.dump

    :/ anstatt crontab.dump müsste doch der "vollständige" Pfad zur Datei angegeben werden. Sprich $BACKUPDIR/user/$USER/$ROTATION/crontab.dump. Schließlich findet kein cd statt. So dürfte die Datei nicht gefunden werden. Die Zeile müsste also lauten:

    Bash
    nice -n 19 setuidgid $USER tar --preserve-permissions $PARM_EXCLUDE -C / -czf $BACKUPDIR/user/$USER/$ROTATION/backup.tar.gz $HOME $BACKUPDIR/user/$USER/$ROTATION/crontab.dump

    Und ich bin auf ein "Fehler" gestoßen. Wenn ein Nutzer keine Cronjobs hat führt der crontab Befehl zu no crontab for someUser. Ich habe daher

    Bash
    nice -n 19 crontab -l -u $USER > $BACKUPDIR/user/$USER/$ROTATION/crontab.dump

    angepasst

    Bash
    test -f /var/spool/cron/$USER && cat /var/spool/cron/$USER > $BACKUPDIR/user/$USER/$ROTATION/crontab.dump

    Anstatt cat kann natürlich auch weiter crontab -u $USER -l verwendet werden.

  • doch da findet ein cd statt, schau mal in der Zeile nach crontab ;-)

    Bash
    crontab -u $USER -l > $BACKUPDIR/user/$USER/$ROTATION/crontab.dump
    cd $BACKUPDIR/user/$USER/$ROTATION/
    nice -n 19 setuidgid $USER tar --preserve-permissions $PARM_EXCLUDE -czf $BACKUPDIR/user/$USER/$ROTATION/backup.tar.gz $HOME crontab.dump

    Wenn der User keine Einträge hat, ist die Datei halt leer.


    Bei Dir wird der crontab Inhalt "nur" ins Backup-Verzeichnis gespeichert, jedoch nicht direkt ins Archiv gepackt.