Ich sudo crontab -e
habe Folgendes:
*/2 * * * * date >> /home/rki/test.log
*/5 * * * * sudo sh /home/rki/docker-compose-stuff/dokuwiki/backups/dokuwiki_backup.sh
*/2 * * * * date >> /home/rki/test.log
funktioniert problemlos, schreibt alle 2 Minuten in die test.log
Datei.
backup.sh
Das Skript mit folgendem Inhalt wird einfach nicht ausgeführt :
#!/bin/bash
# Remove previous backups
#sudo rm dokuwiki-backup*.tar.gz
# Set backup name
name=dokuwiki-backup_$(date '+%Y-%m-%d-%H%M%S')
# Backup stuff
/bin/tar -zcvf "$name.tar.gz" /var/lib/docker/volumes/dokuwiki_data
Ich komme sudo sh dokuwiki_backup.sh
problemlos damit zurecht. Das Bash-Skript ist chmod
ed 0777
und chown rki:rki
.
Was mache ich falsch?
Antwort1
Wenn Sie Ihren Cronjob über hinzufügen sudo crontab -e
, wird er als ausgeführt root
.
Nicht erforderlich
sudo
. Verwenden Sie:*/5 * * * * /bin/sh /home/rki/docker-compose-stuff/dokuwiki/backups/dokuwiki_backup.sh
Das Standardarbeitsverzeichnis sollte
root
s sein$HOME
, also normalerweise/root
. Sie können$name.tar.gz
es dort finden. Aber besser ist es, absolute Pfade zu verwenden, z. B.:/bin/tar -zcvf "/home/rki/Backups/$name.tar.gz" /var/lib/docker/volumes/dokuwiki_data
Antwort2
Um Cronjobs mit vollständiger Root-Umgebung auszuführen, verwenden Sie diesen Befehl
*/5 * * * * su - root -c '/home/rki/docker-compose-stuff/dokuwiki/backups/dokuwiki_backup.sh'