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