tar + встроенное в базу данных средства резервного копирования (так как копирование файлов базы данных не гарантирует ее корректное восстановление)
закачивать файлы на ftp можно хоть curl хоть консольным ftp да хоть скриптом на 5 строчек
p.s. если конвертировать файловую систему vps (это возможно для виртуалок типа kvm) в btrfs то можно воспользоваться штатным инструментом
инкрементального копирования на основе снапшотов (он быстрее на пару порядков, так как копируются буквально только изменения средствами файловой системы ОС а не косвенно через полный рескан, как это делают rsync)
очень большие базы данных можно копировать, настроив master->slave репликацию (реплика и будет эта копия), при необходимости реплику можно приостанавливать, делать ее копию (тем же snapshot backup) и возобновлять работу.. в итоге
интервалы между бакапами могут стать абсурдно маленькими (например минуты), Осторожно с инкрементальными бакапами, не копи их большое количество, лимитируй разумным интервалом и веди стартовое состояние на сервере хранения резервных копий, иначе к примеру храня миллион инкрементальных diff-ов можно очень долго из них восстанавливать последнее состояние