def push_backup(user_email, disk_path): sessname = unique_sessname(user_email) S3Disk.log_info("pushing %s.tar.gz from %s to %s", sessname, disk_path, JBoxVol.BACKUP_BUCKET) bkup_file = os.path.join('/tmp', sessname + ".tar.gz") bkup_tar = tarfile.open(bkup_file, 'w:gz') def set_perms(tinfo): tinfo.uid = 1000 tinfo.gid = 1000 tinfo.uname = 'ubuntu' tinfo.gname = 'ubuntu' return tinfo for f in os.listdir(disk_path): if f.startswith('.') and (f in ['.julia', '.juliabox']): continue full_path = os.path.join(disk_path, f) bkup_tar.add(full_path, os.path.join('juser', f), filter=set_perms) bkup_tar.close() os.chmod(bkup_file, 0666) # Upload to S3 if so configured. Delete from local if successful. bkup_file_mtime = datetime.datetime.fromtimestamp(os.path.getmtime(bkup_file), pytz.utc) + \ datetime.timedelta(seconds=JBoxVol.LOCAL_TZ_OFFSET) if JBoxVol.BACKUP_BUCKET is not None: if JBoxS3.push(JBoxVol.BACKUP_BUCKET, bkup_file, metadata={'backup_time': bkup_file_mtime.isoformat()}) is not None: os.remove(bkup_file) S3Disk.log_info("Moved backup to S3 " + sessname)
def delete(user_email): sessname = unique_sessname(user_email) JBoxS3.delete(JBoxVol.BACKUP_BUCKET, sessname + ".tar.gz")
def pull_backup(user_email): sessname = unique_sessname(user_email) S3Disk.log_info("pulling %s.tar.gz from %s", sessname, JBoxVol.BACKUP_BUCKET) JBoxS3.pull(JBoxVol.BACKUP_BUCKET, sessname + ".tar.gz", metadata_only=False)
def rename_and_delete(user_email): sessname = unique_sessname(user_email) renamed_sessname = sessname + '_old' JBoxS3.move(sessname + ".tar.gz", renamed_sessname + ".tar.gz", JBoxVol.BACKUP_BUCKET)