#!/usr/bin/python
# from large data store section in http://boto.cloudhackers.com/en/latest/s3_tut.html
import math, os
import boto
from filechunkio import FileChunkIO
from time import gmtime, strftime
from boto.s3.connection import S3Connection, Location
print(strftime("%Y-%m-%d %H:%M:%S", gmtime()))
c = boto.connect_s3('ACESS_KEY', 'SECRET_KEY')
b = c.get_bucket('hackmd-repo')
source_path = 'HG001-NA12878-50x_R.vcf.gz'
source_size = os.stat(source_path).st_size
mp = b.initiate_multipart_upload(os.path.basename(source_path))
chunk_size = 52428800
chunk_count = int(math.ceil(source_size / float(chunk_size)))
for i in range(chunk_count):
offset = chunk_size * i
bytes = min(chunk_size, source_size - offset)
with FileChunkIO(source_path, 'r', offset=offset, bytes=bytes) as fp:
mp.upload_part_from_file(fp, part_num=i + 1)
mp.complete_upload()
print(strftime("%Y-%m-%d %H:%M:%S", gmtime()))