Возможно ли, чтобы addfile функции tarfile python не считывал все данные в память? - PullRequest
1 голос
/ 10 апреля 2020

Я пытаюсь скопировать много файлов между корзинами s3, используя python:

    input_stream = get_stream_from_origin_s3()

    tar_stream = BytesIO()
    tar = tarfile.open(mode="w:gz", fileobj=tar_stream)
    info = tarfile.TarInfo(name="a.txt")
    info.size = size_of_input_stream
    tar.addfile(info, input_stream)
    tar_stream.seek(0)

    save_tar_stream_to_destination_s3(tar_stream)

Моя проблема в том, что addfile tarfile считывает все данные в память tar.addfile(info, input_stream), а не в save_tar_stream_to_destination_s3, что вызывает для меня огромное потребление памяти.

В bash Я мог бы просто сделать что-то вроде этого:

tar -czf - big-dir | ssh user@host 'cat > /path/to/big-dir.tar.gz'
...