Как правильно бэкапить файлы в Yandex Storage?
Есть файлы (документы, картинки) на сервере. Есть Yandex Storage. Нужно огранизовать бэкап файлов на Yandex Storage. В голову пришло несколько вариантов:
1. Загружать/удалять в Яндекс в момент загрузки/удаления на сервере.
2. Сделать таблицу файлов загруженных на Яндекс. В момент загрузки/удаления помечать файлы в таблице и затем, допустим раз в неделю, пачкой проводить загрузку/удаление на Яндекс.
3. Сносить все файлы в Яндекс. Упаковывать все файлы на сервере в архив. И грузить этот архив на Яндекс. Повторять раз в неделю. Но тогда это вероятно отразится на стоимости в Яндекс т.к. будут операции на загрузку-удаление гигабайтов данных.
Как поступить и что выбрать?
Дополнительно:
Содержание
А почему просто не взять готовый инструментарий типа borg-backup, restic, duplicity, да тысячи их? Там и ротация бэкапов настраивается, можете шифровать данные, делать инкрементальные или полные бэкапы и т.п. Большинство таких утилит умеет работать с S3-совместимыми хранилищами.
Инкрементальные бакапы
Каждый архив должен содержать только разницу между предыдущим состоянием файловой системы и текущим
Каждый инструмент резервного копирования использует свой формат хранения такого снапшота
Если делаешь свой, то учитывай не только новые и измененные файлы но и удаляемые. Существуют binary diff утилиты, вычисляющие приблизительную разницу между двумя бинарными файлами для экономии места в бакапе, вместо полного копирования измененного файла
p.s. недостаток инкрементальных бакапов в том что для восстановления состояния нужно "применить снапшоты" за все время с момента первого сохраненного состояния
решают эту проблему тем что ограничивают количество промежуточных состояний и с каждым новым модифицирют стартовое состояние, применив к нему самый старый бакап (который после этого удалят)
p.p.s. btrfs имеет встроенные механизмы получения инкрементальных бакапов между снапшотами без сканирования всех файлов (что актуально для ОГРОМНЫХ архивов)
- Это типа второго варианта только с архивами? С архивами не работал никогда, не представляю как все эти операции с ними проводить (сравнения, изменения итд). Выглядит в моей голове как то неоправданно сложно.
- Все нормальные архиваторы от tar до rar умеют совершать архивацию, с пометкой в файловой системе флаг что файл в архиве или например по дате (все файлы с изменениями после даты) и т.п.
чуть сложнее с контролем за удалением файлов, но вот пример, в windows (в linux всегда было, loop устройства) можно создать .vhdx файл (в панели управления дисками создать виртуальный диск), внутри которого развернуть полноценную файловую систему,... копировать файлы туда можно с помощью rsync, он и удалит и обновит и не будет лишние операции делать.
т.е. получаешь что то типа архива (сжатие можно средствами файловых систем организовать) который можно переносить одним файлом, держать в сети (с осторожностью) и при этом его можно подключить как диск и работать в любых программах
- rPman, звучит как правильное решение) Хотя для меня все равно сложно, если только библиотеку под ПХП поискать на гитхабе.
Ответы:
А почему актуально только платное облачное хранение?
Локального сервера/NAS у вас нет?
- У меня есть один сервер под проект, где и сейчас хранятся файлы. Ну облако дешевле + кодовая база настроена на Яндекс.
Для решения данной проблемы вы можете воспользоваться услугами фрилансеров. Мы выполним необходимую работу быстро и качественно.
Оставить комментарий Отменить
Ответы
- Есть ответ! к записи Как уменьшить масштаб меньше 100% в Windows 10 (22H2)
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Аналоги CloudFlare в России?
- Есть ответ! к записи Как называется человек, который дизайн придумает для сайта и сверстает его?
- Есть ответ! к записи Можно ли установить Яндекс.Диск на АльтЛинукс?
- Есть ответ! к записи Картинки мутные только на сафари, есть выход?
- Есть ответ! к записи Keenetic. Как настроить SSTP клиент с сертификатом?
- Есть ответ! к записи Чем заменить executor в aiogram 3?
Для правильного бэкапа файлов в Yandex Storage, можно воспользоваться Yandex Object Storage API, который предоставляет различные методы для работы с файлами и папками в облачном хранилище.
Прежде всего, необходимо получить доступ к Yandex Object Storage API, для этого необходимо создать аккаунт на Яндекс Облаке и настроить доступ к API. Затем необходимо установить библиотеку для работы с API, например, yandex-cloud/php-sdk.
Далее можно использовать следующий пример кода на PHP для создания бэкапа файла в Yandex Storage:
В данном примере кода, мы используем библиотеку yandex-cloud/php-sdk для работы с Yandex Object Storage API. Мы создаем новый экземпляр клиента ObjectStorageClient и указываем необходимые параметры, такие как токен доступа, идентификатор облака и идентификатор папки.
Затем мы указываем имя файла и путь к файлу, который мы хотим загрузить в облако. Используя метод uploadFile, мы загружаем файл в Yandex Storage.
Таким образом, приведенный выше код поможет вам правильно бэкапить файлы в Yandex Storage, используя Yandex Object Storage API. Не забудьте заменить YOUR_ACCESS_TOKEN, YOUR_CLOUD_ID и YOUR_FOLDER_ID на ваши реальные данные.