Резервное копирование контента с Cloudinary

Автор: Дмитрий Канн Чтение на 2 мин
Этот пост  на английском

Вскоре после моего переезда на Cloudinary для хостинга изображений и видео, я закономерно задался вопросом: как теперь это всё богатство резервировать?

Ничто не вечно под луной, и облака в том числе. Или можно в один прекрасный день, скажем, лишиться своего аккаунта вместе с доступом. Поэтому резервное копирование — задача более чем актуальная.

На платных планах Cloudinary предлагает вариант резервного копирования в Amazon S3 bucket, но на бесплатном тарифе эта функция недоступна.

Скрипт резервного копирования

Поскольку хостинг обладает богатыми возможностями по интеграции при помощи своих API, я нисколько не сомневался, что сделать скрипт для резервного копирования контента будет совсем несложно.

Так и вышло. Я набросал удобный, рабочий вариант на Python 3, копирующий все фото и видео на локальный диск, меньше, чем за час: cloudinary-backup.

Установка и настройка

Чтобы использовать скрипт, нужно:

  • Установить пакет cloudinary: sudo pip3 install cloudinary
  • Установить переменную окружения CLOUDINARY_URL=cloudinary://<ключ_API>:<пароль_API>@<имя_облака> — это значение можно скопировать прямо в заголовке Cloudinary Dashboard.
  • Подкрутить переменную BACKUP_DIR в заголовке скрипта, чтобы она указывала на желаемую локальную папку.

Запуск

После этого можно скрипт просто запускать (при запуске с ключом командной строки -v вывод будет намного подробнее):

Работа скрипта резервного копирования Cloudinary.
Работа скрипта резервного копирования Cloudinary.

Скрипт сравнивает содержимое облачного хостинга и локального диска, скачивая только те изображения и видео, которые либо отсутствуют локально, либо имеют отличающийся размер.

Один из нюансов, связанных с работой Cloudinary, состоит в том, что Admin API, используемый для получения списков контента, является лимитированным по частоте использования. Но этот лимит составляет 500 запросов в час, и за один запрос можно получить до 500 элементов списка, так что, если у вас на хостинге меньше 250 тыс. файлов, этого должно быть достаточно.

Удаление «лишних» файлов

Если программу запустить с ключом -d, она также удалит локальные файлы, отсутствующие в Cloudinary.

Исходный код

Исходный код скрипта доступен на GitHub. ■

Подписаться на обновления блога:

Комментарии

Поделиться: