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()