Это сокорее фича системы а не PHP+MySQL (хотя думаю и из под них прикрутить можно.)
У меня так сайт бэкапится + база:
1. tar -cvzf /_mybackups/NAME_www.tgz /home/NAME/public_html /home/NAME/includes — те каталоги которые мне нужны сворачиваю в архив
2. mysqldump -h localhost -u LOGIN PASSWORD -d DATABASE > /_mybackups/db_service.sql — снимаю дамп с базы
3. tar -cvzf /_mybackups/db_service.tgz /_mybackups/db_service.sql — базу в архив
4. rm /_mybackups/db_service.sql — удаляю дамп
Таким образом на выходе архив с БД и с сайтом
про кроны (Cron) погугли — там ничего сложного. А это есть моих 4 задания крон, которые ты сам ставишь с какой нужно периодичностью. при необходимости можешь делать версионирование по датам. прораммировать ничего не нужно — раз настроил и у тебя всегда есть архив с тем что нужно