Как вы уже догадались, s3cmd
намного надежнее, чем несколько лет назад, и многие люди, включая меня, без проблем используют его. Также amazon S3 не взимает плату за загрузку данных, поэтому денежный фактор не является проблемой, но определенно вы хотите избежать ненужной передачи, которая чаще всего происходит с резервными копиями базы данных.
У меня была такая же проблема с MySQL, потому что к сожалению, не поддерживает инкрементное резервное копирование. Вот почему я написал сценарий bash, который для каждой базы данных выгружает таблицу в отдельный файл. После этого я сжимаю его и zdiff
с предыдущей копией, игнорируя последние 2-3 строки (где mysqldump
записывает текущую дату). Если между файлами нет разницы, я не синхронизирую контент в облаке. Обратной стороной этого подхода является сложность решения, которое требует дополнительных шагов при восстановлении данных.
Также, если у вас есть какие-либо сведения о разработке программного обеспечения, которое вы запускаете на сервере, вы можете добавить дополнительный параметр для каждой таблицы, которая отслеживает изменения. Поэтому на основе этого вы указываете своему сценарию резервного копирования выгружать только те таблицы, которые были изменены с момента последнего резервного копирования.
Обычный Rsync - хороший выбор для резервного копирования файлов, поскольку он прост и имеет хорошую производительность. Однако, если файл изменяется во время Rsync-ed, копия может быть повреждена. Поэтому очень важно убедиться, что все файлы закрыты. В вашем случае, если было изменено и исправлено несколько файлов изображений, следующий Rsync все равно перезапишет их, поскольку Rsync копирует только измененные файлы, поэтому это похоже на процесс самовосстановления.