Amazon Web Services Glacier - это облачный архив с низкой стоимостью хранения - это место для сохранения файлов с длительным сроком хранения и редким использованием. Другими словами - это хранилище для того, что жалко удалить, что может понадобиться через несколько лет. Главным преимуществом этого сервиса является цена - около 5 центов за 1 гигабайт в год.
AWS Glacier не очень удобен в использовании с точки зрения конечного пользователя, так как работа с архивами растягивается на несколько часов и даже суток, к тому же интерфейс у сервиса не позволяет управлять файлами - большинство операций нужно делать из командной строки. В этой серии заметок я предлагаю решение, которое позволит компании автоматически архивировать файлы для хранения в AWS Glacier. Моё решение основано на скриптах PowerShell, библиотеках AWS Tools For Windows, базе данных MS SQL, расписании Windows Task Scheduler и веб-сервере IIS.
Логика работы проекта:
- Подготовка файлов к перемещению в облачный архив - сжатие в ZIP архив.
- Регистрация архива и его содержимого в базе данных компании.
- Копирование архива в облачное хранилище.
- Индексирование облачного хранилища.
- Сравнение размеров архивов на сервере компании и в AWS Glacier.
- Удаление оригинального архива с сервера компании.
Составные части проекта:
- Коллекция архивов (vault) в AWS Glacier, куда сохраняются архивы компании.
- Сервер Windows Server, где собираются файлы для архивирования и происходят все процессы с архивами.
- База данных MS SQL, где хранится информация об архивах, их содержимом, статусах архивирования и времени создании.
- Скрипт для создания архива из набора файлов на сервере компании.
- Скрипт для копирования архива в AWS Glacier (совмещен со скриптом создания архива).
- Скрипт для индексирования содержимого коллекции в AWS Glacier.
- Скрипт для сравнения размеров архивов и удалении файлов на сервере компании.
- Веб-сайт ASP.NET на сервере IIS для отображения базы данных об архивах.
- Вспомогательный скрипт для нарезки больших архивов на части и формировании команд для ручной загрузки в AWS Glacier (подробнее о скрипте в этой заметке).