По крону, примерно раз в день?
Можно и чаще, смотря, насколько чувствительно будет потерять данные между бэкапами. Если совсем-совсем чувствительно, нужно задуматься о поднятии реплики или о постоянном бэкапе (используя WAL-журналы).
И потом их закачивать на aws и dropbox?
Хоть куда, но
обязательно куда-нибудь закачивать на совершенно отдельный сервер/сервис, с проверкой, что всё успешно закачалось.
И лучше - на 2 разных хранилища.
Может, на мыло тоже отправлять на всякий случай?
Ну, чисто факультативно можно, хотя смысла в этом я лично не вижу, если вы закачиваете бэкап на другие сервера/сервисы.
Т.е. на мыло вы можете слать, а можете и не слать, но закачивать бэкап на 1-2 других сервера/сервиса - необходимо.
Из личного опыта. Тру-админы, просьба поправить, если где-то косячу.
Написал bash-скрипт, который запускаю по крону раз в 3 часа. Скрипт
- делает бэкап обычным pg_dump, в несколько потоков, в формате папки (--format=d)
- проводит тестовое восстановление бэкапа. Чисто в лоб - завершится ли pg_restore с нулевым кодом возврата
- сжимает бэкап БД и файлов в архив
- отправляет архив на отдельное ftp-хранилище
- отправляет архив на ещё одно ftp-хранилище
- отправляет краткий лог всего процесса (с метками времени) в корпоративный slack
Пока храню всё, не вычищая старого (с местом проблем нет). В идеале, видимо, нужно хранить по схеме
- N (где N - несколько десятков) последних
- 4-6 последних еженедельных
- 2-4 последних ежемесячных.