NewsBlur/utils/backups/s3.py

64 lines
2.1 KiB
Python
Raw Normal View History

from boto.s3.connection import S3Connection
2016-11-17 11:37:10 -08:00
from boto.s3.connection import OrdinaryCallingFormat
from boto.s3.key import Key
2010-12-16 14:03:03 -05:00
import os
import sys
2011-05-08 20:21:09 -04:00
2013-02-25 19:01:04 -08:00
if '/srv/newsblur' not in ' '.join(sys.path):
sys.path.append("/srv/newsblur")
2010-12-16 14:03:03 -05:00
os.environ['DJANGO_SETTINGS_MODULE'] = 'newsblur_web.settings'
2010-12-16 14:09:15 -05:00
from django.conf import settings
ACCESS_KEY = settings.S3_ACCESS_KEY
SECRET = settings.S3_SECRET
BUCKET_NAME = settings.S3_BACKUP_BUCKET # Note that you need to create this bucket first
2013-04-29 14:06:42 -07:00
def save_file_in_s3(filename, name=None):
2016-11-17 11:37:10 -08:00
conn = S3Connection(ACCESS_KEY, SECRET, calling_format=OrdinaryCallingFormat())
bucket = conn.get_bucket(BUCKET_NAME)
k = Key(bucket)
2013-04-29 14:06:42 -07:00
k.key = name or filename
k.set_contents_from_filename(filename)
def get_file_from_s3(filename):
2016-11-17 11:37:10 -08:00
conn = S3Connection(ACCESS_KEY, SECRET, calling_format=OrdinaryCallingFormat())
bucket = conn.get_bucket(BUCKET_NAME)
k = Key(bucket)
k.key = filename
k.get_contents_to_filename(filename)
def list_backup_in_s3():
2016-11-17 11:37:10 -08:00
conn = S3Connection(ACCESS_KEY, SECRET, calling_format=OrdinaryCallingFormat())
bucket = conn.get_bucket(BUCKET_NAME)
for i, key in enumerate(bucket.get_all_keys()):
2020-06-19 02:29:40 -04:00
print("[%s] %s" % (i, key.name))
def delete_all_backups():
#FIXME: validate filename exists
2016-11-17 11:37:10 -08:00
conn = S3Connection(ACCESS_KEY, SECRET, calling_format=OrdinaryCallingFormat())
bucket = conn.get_bucket(BUCKET_NAME)
for i, key in enumerate(bucket.get_all_keys()):
2020-06-19 02:29:40 -04:00
print("deleting %s" % (key.name))
key.delete()
if __name__ == '__main__':
import sys
if len(sys.argv) < 3:
2020-06-19 02:29:40 -04:00
print('Usage: %s <get/set/list/delete> <backup_filename>' % (sys.argv[0]))
else:
if sys.argv[1] == 'set':
save_file_in_s3(sys.argv[2])
elif sys.argv[1] == 'get':
get_file_from_s3(sys.argv[2])
elif sys.argv[1] == 'list':
list_backup_in_s3()
elif sys.argv[1] == 'delete':
delete_all_backups()
else:
2020-06-19 02:29:40 -04:00
print('Usage: %s <get/set/list/delete> <backup_filename>' % (sys.argv[0]))