Схема "база + файлы" - это типовой паттерн
(хранить статические, не изменяемые файлы, которые приложение изредка добавляет, часто запрашивает только для того, чтобы сразу же отдать клиенту по http и никогда не изменяет)
- chmod 400 "$SSH_PRIVATE_KEY"
- ssh-add "$SSH_PRIVATE_KEY"
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
вот тут я бы все таки выбрал единственный источник правды. Например БД.
А не надеялся что "photo.jpg версия на 20-е декабря" в S3 окажется "photo.jpg созданное 18 декабря" в базе - мало ли что там в бакете произошло за эти два дня, а версия-то создается при изменении объекта.
Бэкапим базу - делаем срез состояния, содержащий точно соответствующую версию объекта в S3, уже не ориентируясь на дату
Заодно сужаем список объектов - которые надо терзать при восстановлении.
Пробегаться по всем (а вдруг у вас там через два года будут миллиарды их) - долго и, в случае облачных провайдеров(если не селфхост) - дорого.