-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtasks.py
31 lines (26 loc) · 1.07 KB
/
tasks.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import datetime
from google.cloud import storage
from invoke import task
import os
BUCKET_NAME = 'lekcije'
@task
def backup_mysql(ctx):
mysqldump = os.getenv('MYSQLDUMP')
if not mysqldump:
mysqldump = './bin/mysqldump'
user = os.getenv('MYSQL_USER')
password = os.getenv('MYSQL_PASSWORD')
host = os.getenv('MYSQL_HOST')
port = os.getenv('MYSQL_PORT')
database = os.getenv('MYSQL_DATABASE')
dump_file = 'lekcije_' + datetime.datetime.now().strftime('%Y%m%d') + '.dump.bz2'
ctx.run('{mysqldump} -u{user} -p{password} -h{host} -P{port} --no-tablespaces --quick {database} | bzip2 -9 > {dump_file}'.format(**locals()))
client = storage.Client()
bucket = client.get_bucket(BUCKET_NAME)
new_blob = bucket.blob('backup/' + dump_file)
new_blob.upload_from_filename(dump_file)
delete_date = (datetime.datetime.now() - datetime.timedelta(days=7)).strftime('%Y%m%d')
delete_blob_name = 'backup/lekcije_' + delete_date + '.dump.bz2'
delete_blob = bucket.get_blob(delete_blob_name)
if delete_blob:
delete_blob.delete()