Несоответствие числа клиентских объектов Python Swift с актуальными объектами в облаке

Я использую следующую команду, чтобы перечислить все объекты в контейнере и дамп в файл журнала.

swift -A url -U username -K password list container_name> log.txt

Я проверил количество строк в выходном файле журнала, и он показывает количество 1076857. Но когда я проверил облако вручную и нашел счетчик, который показывает 1081756. В чем может быть причина этого несоответствия? Вышеприведенная команда исключает пустую папку?

Пожалуйста, предложите.

1 ответ

Решение

Большие файлы (более 5 ГБ) хранятся в Swift частично (?), Которые называются сегментами.

Например:
Предположим, у нас есть файл размером 13 ГБ и именем log.txt.
Мы хотим загрузить его в контейнер container1.

Это был сценарий, и Swift делает следующее:

  1. Swift берет этот файл и делит на сегменты, которые:

     log.txt_segment1 ---> size 5GB   
     log.txt_segment2 ---> size 5GB   
     log.txt_segment3 ---> size 3GB
    
  2. Swift создает объект с именем log.txt в container1 с размером 0MB. На самом деле это не реальный объект, это только псевдоним.
  3. Затем Swift создает еще один контейнер с именем container1_segments который хранит реальный объект (сегментированный объект) из container1,
  4. Затем Swift загружает сегменты файла log.txt в container1_segments,

Итак, что мы имеем сейчас?
- у нас есть 2 контейнера [container1, container1_segments]
- у нас есть 4 объекта [log.txt, log.txt_segment1, log.txt_segment2, log.txt_segment3]

Теоретически:
У нас должен быть 1 контейнер и 1 объект, но вместо этого у нас есть 2 контейнера и 4 объекта; возможно, это приводит к несоответствию количества объектов для вашего Swift.

Другие вопросы по тегам