Wenn es mal geht und mal nicht, liegt es zu 99% am Provider. Du kannst den Ressourcenbedarf immens senken, wenn du dafür sorgst, dass keine großen Dateien im Kursordner liegen. Richtwert ist dabei maximal 80% des memory_limits für PHP. Beträgt also der Wert für memory_limit laut phpinfo 24MB, sollten keine Dateien größer 20MB verwendet werden. Wenn du gepackte Dateien (zip, tar...) einsetzt, ist es noch viel schlimmer - daran hält sich jeder Packer sowieso ewig auf.
Generell halte ich das ganze "Gebackuppe" und "Restore" über PHP für nicht so optimal. Wenn der Mist zuverlässig mit jeder Dateigröße laufen soll, führt fast kein Weg an einem dezidierten Server vorbei, der erstmal administriert sein will.
Kurzfassung:
Lösch' mal aus den Kursdateien die 1-2 dicksten Brocken heraus.
Gruß,
Maik