2021-06-19 12:24:33 -06:00
|
|
|
#!/usr/bin/python3
|
2011-05-03 11:07:09 -04:00
|
|
|
import os
|
|
|
|
import sys
|
2021-12-13 17:09:37 -05:00
|
|
|
import socket
|
|
|
|
CURRENT_DIR = os.path.dirname(__file__)
|
|
|
|
NEWSBLUR_DIR = ''.join([CURRENT_DIR, '/../../'])
|
2011-05-18 14:36:31 -04:00
|
|
|
sys.path.insert(0, NEWSBLUR_DIR)
|
2021-12-13 17:09:37 -05:00
|
|
|
os.environ['DJANGO_SETTINGS_MODULE'] = 'newsblur_web.settings'
|
|
|
|
|
|
|
|
import threading
|
|
|
|
|
|
|
|
class ProgressPercentage(object):
|
|
|
|
|
|
|
|
def __init__(self, filename):
|
|
|
|
self._filename = filename
|
|
|
|
self._size = float(os.path.getsize(filename))
|
|
|
|
self._seen_so_far = 0
|
|
|
|
self._lock = threading.Lock()
|
2011-05-18 14:36:31 -04:00
|
|
|
|
2021-12-13 17:09:37 -05:00
|
|
|
def __call__(self, bytes_amount):
|
|
|
|
# To simplify, assume this is hooked up to a single filename
|
|
|
|
with self._lock:
|
|
|
|
self._seen_so_far += bytes_amount
|
|
|
|
percentage = (self._seen_so_far / self._size) * 100
|
|
|
|
sys.stdout.write(
|
|
|
|
"\r%s %s / %s (%.2f%%)" % (
|
|
|
|
self._filename, self._seen_so_far, self._size,
|
|
|
|
percentage))
|
|
|
|
sys.stdout.flush()
|
2021-06-27 14:11:14 -06:00
|
|
|
|
2021-12-13 17:09:37 -05:00
|
|
|
import time
|
2021-06-19 12:17:19 -06:00
|
|
|
import boto3
|
2021-12-13 17:09:37 -05:00
|
|
|
from django.conf import settings
|
2011-05-03 11:07:09 -04:00
|
|
|
|
2021-12-13 17:09:37 -05:00
|
|
|
s3 = boto3.client('s3', aws_access_key_id=settings.S3_ACCESS_KEY, aws_secret_access_key=settings.S3_SECRET)
|
2011-05-03 11:07:09 -04:00
|
|
|
|
2021-12-13 17:09:37 -05:00
|
|
|
hostname = socket.gethostname().replace('-','_')
|
|
|
|
s3_object_name = f'backup_{hostname}/backup_{hostname}_{time.strftime("%Y-%m-%d-%H-%M")}.rdb.gz'
|
|
|
|
path = os.listdir('/backup')[0]
|
|
|
|
print('Uploading %s (from %s) to S3...' % (s3_object_name, path))
|
|
|
|
s3.upload_file(path, settings.S3_BACKUP_BUCKET, s3_object_name, Callback=ProgressPercentage(path))
|
2021-06-19 12:17:19 -06:00
|
|
|
|