Распаковать файл в контейнере облачных файлов Rackspace для CDN

Сегодня я создал учетную запись Rackspace для CDN, чтобы обслуживать мои образы Opencart из Rackspace.

Я создал контейнер, в который я буду загружать более 500 000 изображений, но предпочитаю загружать их в виде сжатого файла, так как он более гибкий.

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


person magzen    schedule 28.07.2015    source источник


Ответы (1)


Ответ может зависеть от того, как вы пытаетесь загрузить файл/файлы. Поскольку это не было указано, я отвечу на ваш вопрос, используя CLI из среды * nix.

Ответ на ваш вопрос (используя curl)

Используя curl, вы можете загрузить сжатый файл и извлечь его с помощью функции извлечения-архива.

$ tar cf archive.tar directory_to_be_archived
$ curl -i -XPUT -H'x-auth-token: AUTH_TOKEN' https://storage101.iad3.clouddrive.com/v1/MossoCloudFS_aaa-aaa-aaa-aaa?extract-archive=tar -T ./archive.tar

Вы можете найти документацию по этой функции здесь: http://docs.rackspace.com/files/api/v1/cf-devguide/content/Extract_Archive-d1e2338.html

Рекомендуемое решение (с использованием Swiftly)

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

Вместо этого я бы рекомендовал использовать такой инструмент, как Swiftly, который позволит вам одновременно загружать файлы. Таким образом, если во время загрузки возникнет проблема, вам не придется повторно загружать объекты, которые уже были успешно загружены.

Пример того, как это сделать, выглядит следующим образом:

$ swiftly --auth-url="https://identity.api.rackspacecloud.com/v2.0" \
--auth-user="{username}" --auth-key="{api_key}" --region="DFW" \
--concurrency=10 put container_name -i images/

Если во время загрузки происходит сбой в сети или вам нужно остановить/перезапустить загрузку файлов, вы можете добавить параметр «--other» после «put» в приведенной выше команде. Это сообщит Swiftly сначала HEAD объект и загрузку только в том случае, если время или размер локального файла не соответствует соответствующему объекту, пропуская объекты, которые уже были загружены.

Swiftly можно найти на github здесь: https://github.com/gholt/swiftly

Есть и другие клиенты, которые, возможно, делают то же самое, но я знаю, что Swiftly работает, поэтому рекомендую его.

person hurricanerix    schedule 29.07.2015