Я пытаюсь скопировать много файлов между корзинами 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'