Я пытаюсь прочитать файл кусками разного размера, чтобы вычислить etag файла и сравнить его с etags на ресурсе s3.
Я понимаю, что это вопрос, который задавался ранее, но все ответы Я видел, что в этом случае используется чанки одинакового размера, которые согласуются в процессе обработки.
Я пытаюсь взять файл любого размера и для первых 5 ГБ этого файла вычислить md5 для каждого 5 МБ фрагмента. Затем для следующих 25 ГБ файла рассчитайте md5 для каждого блока 25 МБ. И для окончательного объема файла рассчитайте md5 для каждого блока 125 МБ.
Я полагаю, что это разбивается на: 1000 фрагментов от 5 МБ до 5 ГБ, следующие 1000 блоков от 25 МБ до 25 ГБ (или чтение до 30 ГБ) ) последние 8000 фрагментов по 125 МБ каждый до 1 ТБ
Протокол S3 ограничивает количество фрагментов до 10000 макс.
Таким образом, для файла размером 49,9 ГБ я бы получил 2136 объединенных частей и md5
Причина этого в том, что загрузка на устройство s3 была сделана с использованием Goofys, который загружает на основе этой схемы чанкинга.
Я пытался использовать вложенные циклы while (где мое условие не было ' не работает должным образом), и моя настоящая попытка использует операторы if ...
Когда я теряюсь, я проверяю, что file.read (chunk_size) изменяется при достижении пороговых значений размера, пока весь файл не будет читать.