Ich habe das Skript im Ordner /etc/cron.daily/ gespeichert und
mittels crontab -e folgenden cronjob angelegt:
Zunächst einmal deutet deine Vorgehensweise darauf hin, dass du den Sinn der cron.daily nicht ganz verstanden hast. Skripte, die dort liegen, werden von einem eigenen Dienst anacron verwaltet. Ein zusätzlicher Aufruf per Crontab muss nicht, kann aber zu unerwünschten Ergebnissen führen. Gerade bei Datensicherungen in mehreren Generationen (typisch z. B. unter /var/log/ die syslog, syslog.1, syslog.2.gz…) kann das dazu führen, dass jede zweite Generation überschrieben wird.
Der Anacron-Dienst ist speziell für Workstations gedacht, bei denen nicht sichergestellt ist, dass der Rechner zu einem bestimmten Zeitpunkt eingeschaltet ist. Der Dienst holt eine verpasste Aufgabe dann zum nächstmöglichen Zeitpunkt nach. Wenn Anacron allerdings nicht installiert ist, oder wenn dein Script auf doppelte Aufrufe nicht allergisch reagiert, ist deine Vorgehensweise zwar unüblich, müsste aber dennoch problemlos funktionieren.
Dein Problem dürfte eine ganz andere Ursache haben. Darüber kann ich zwar nur spekulieren, aber der Fehler ist eigentlich immer der gleiche: Du verläßt dich im Script auf eine Umgebung, die das Script, per cronjob aufgerufen, nicht vorfindet.
Wenn du testest, tust du das in einer shell-Session, die insbesondere bezügl. des Environment und der X-Einbindung auf deinen aktuellen Desktop zugeschnitten ist. Cronjobs hingegen laufen völlig unabhängig davon, sie sind deiner normalen Umgebung gegenüber blind wie ein Kücken im Ei.
Das bedeutet, dass du _alle_ Verweise auf Dateien gleich welcher Art vollqualifiziert schreiben musst. Also z. B. /bin/cp oder /usr/bin/rename anstelle der sonst völlig ausreichenden cp und rename. Und wenn du in deinem Script ein Programm aufrufst, das auf den Zugriff auf eine X-Session angewiesen ist, musst du explizit eine Verbindung zu dieser Session angeben (und der Eigentümer der X-Session muss in dieser Session angemeldet sein).
Um z. B. immer morgens um 7 mit Hilfe von xine einen Wecker krähen zu lassen, lautet der crontab-Eintrag nicht
# m h dom mon dow command
00 07 \* \* \* /usr/bin/xine /home/user/weckruf.wav
sondern
# m h dom mon dow command
00 07 \* \* \* DISPLAY=:0 XAUTHORITY=/home/user/.Xauthority /usr/bin/xine /home/user/weckruf.wav
HTH