def save_new_backup(self, database_name): """ Save a new backup file. """ print("Backing Up Database: %s" % database_name) temp_dir = tempfile.mkdtemp(prefix='backup') try: backup_extension = self.backup_extension or self.dbcommands.settings.extension backup_file = os.path.join( temp_dir, utils.generate_backup_filename(database_name, self.servername, backup_extension) ) with open(backup_file, 'wb') as f: self.dbcommands.run_backup_commands(f) if self.compress: backup_file = self.compress_file(backup_file) if self.encrypt: backup_file = utils.encrypt_file(backup_file) print(" Backup tempfile created: %s" % (utils.handle_size(backup_file))) print(" Writing file to %s: %s" % (self.storage.name, backup_file)) self.storage.write_file(backup_file) finally: shutil.rmtree(temp_dir)
def restore_backup(self): """ Restore the specified database. """ self.log("Restoring backup for database: %s" % self.database['NAME'], 1) # Fetch the latest backup if filepath not specified if not self.filepath: self.log(" Finding latest backup", 1) filepaths = self.storage.list_directory() filepaths = [f for f in filepaths if f.endswith('.' + self.backup_extension)] if not filepaths: raise CommandError("No backup files found in: /%s" % self.storage.backup_dir) self.filepath = filepaths[-1] # Restore the specified filepath backup self.log(" Restoring: %s" % self.filepath, 1) input_filename = self.filepath inputfile = self.storage.read_file(input_filename) if self.decrypt: unencrypted_file, input_filename = self.unencrypt_file(inputfile, input_filename) inputfile.close() inputfile = unencrypted_file if self.uncompress: uncompressed_file = self.uncompress_file(inputfile) inputfile.close() inputfile = uncompressed_file self.log(" Restore tempfile created: %s" % utils.handle_size(inputfile), 1) answer = input("Are you sure you want to continue? [Y/n]") if answer.lower() not in ('y', 'yes', ''): self.log("Quitting", 1) sys.exit(0) inputfile.seek(0) self.dbcommands.run_restore_commands(inputfile)
def backup_mediafiles(self, encrypt, compress): source_dir = self.get_source_dir() if not source_dir: print("No media source dir configured.") sys.exit(0) print("Backing up media files in %s" % source_dir) output_file = self.create_backup_file( source_dir, self.get_backup_basename( compress=compress ), compress=compress ) if encrypt: encrypted_file = utils.encrypt_file(output_file) output_file = encrypted_file print(" Backup tempfile created: %s (%s)" % (output_file.name, utils.handle_size(output_file))) print(" Writing file to %s: %s" % (self.storage.name, self.storage.backup_dir)) self.storage.write_file( output_file, self.get_backup_basename( compress=compress) )
def backup_mediafiles(self, encrypt): source_dir = self.get_source_dir() if not source_dir: print("No media source dir configured.") sys.exit(0) temp_dir = tempfile.mkdtemp(prefix='backup') try: print("Backing up media files in %s" % source_dir) output_file = os.path.join(temp_dir, self.get_backup_basename()) self.create_backup_file(source_dir, output_file) if encrypt: encrypted_file = utils.encrypt_file(output_file) # remove previous file to save disk space os.remove(output_file) output_file = encrypted_file print(" Backup tempfile created: %s (%s)" % (output_file, utils.handle_size(output_file))) print(" Writing file to %s: %s" % (self.storage.name, output_file)) self.storage.write_file(output_file) finally: shutil.rmtree(temp_dir)
def save_new_backup(self, database, database_name): """ Save a new backup file. """ print("Backing Up Database: %s" % database['NAME']) filename = self.dbcommands.filename(self.servername) outputfile = tempfile.SpooledTemporaryFile(max_size=10 * 1024 * 1024) self.dbcommands.run_backup_commands(outputfile) if self.compress: compressed_file = self.compress_file(outputfile) outputfile.close() outputfile = compressed_file if self.encrypt: encrypted_file = utils.encrypt_file(outputfile) outputfile = encrypted_file print(" Backup tempfile created: %s" % (utils.handle_size(outputfile))) print(" Writing file to %s: %s, filename: %s" % (self.storage.name, self.storage.backup_dir, filename)) self.storage.write_file(outputfile, filename)
def backup_mediafiles(self, encrypt): source_dir = self.get_source_dir() if not source_dir: print("No media source dir configured.") sys.exit(0) print("Backing up media files in %s" % source_dir) output_file = self.create_backup_file(source_dir, self.get_backup_basename()) if encrypt: encrypted_file = utils.encrypt_file(output_file) output_file = encrypted_file print(" Backup tempfile created: %s (%s)" % (output_file.name, utils.handle_size(output_file))) print(" Writing file to %s: %s" % (self.storage.name, self.storage.backup_dir)) self.storage.write_file(output_file, self.get_backup_basename())
def save_new_backup(self, database, database_name): """ Save a new backup file. """ print("Backing Up Database: %s" % database['NAME']) filename = '{servername}-{database_name}-{timestamp}.{backup_extension}'.format( servername=self.servername, database_name=database_name, timestamp=time.strftime("%Y%m%d-%H%M%S"), backup_extension=self.backup_extension ) outputfile = tempfile.SpooledTemporaryFile(max_size=10 * 1024 * 1024) self.dbcommands.run_backup_commands(outputfile) if self.compress: compressed_file = self.compress_file(outputfile) outputfile.close() outputfile = compressed_file if self.encrypt: encrypted_file = utils.encrypt_file(outputfile) outputfile = encrypted_file print(" Backup tempfile created: %s" % (utils.handle_size(outputfile))) print(" Writing file to %s: %s, filename: %s" % (self.storage.name, self.storage.backup_dir, filename)) self.storage.write_file(outputfile, filename)
def backup_mediafiles(self, encrypt, compress): source_dir = self.get_source_dir() if not source_dir: self.stderr.write("No media source dir configured.") sys.exit(0) self.log("Backing up media files in %s" % source_dir, 1) filename = self.get_backup_basename(compress=compress) output_file = self.create_backup_file(source_dir, filename, compress=compress) if encrypt: encrypted_file = utils.encrypt_file(output_file, filename) output_file, filename = encrypted_file self.log( " Backup tempfile created: %s (%s)" % (filename, utils.handle_size(output_file)), 1) self.log( " Writing file to %s: %s" % (self.storage.name, self.storage.backup_dir), 1) self.storage.write_file(output_file, self.get_backup_basename(compress=compress))
def restore_backup(self): """ Restore the specified database. """ self.stdout.write("Restoring backup for database: %s" % self.database['NAME']) # Fetch the latest backup if filepath not specified if not self.filepath: self.stdout.write(" Finding latest backup") filepaths = self.storage.list_directory() filepaths = [ f for f in filepaths if f.endswith('.' + self.backup_extension) ] if not filepaths: raise CommandError("No backup files found in: /%s" % self.storage.backup_dir) self.filepath = filepaths[-1] # Restore the specified filepath backup self.stdout.write(" Restoring: %s" % self.filepath) input_filename = self.filepath inputfile = self.storage.read_file(input_filename) if self.decrypt: unencrypted_file = self.unencrypt_file(inputfile) inputfile.close() inputfile = unencrypted_file input_filename = inputfile.name if self.uncompress: uncompressed_file = self.uncompress_file(inputfile) inputfile.close() inputfile = uncompressed_file self.stdout.write(" Restore tempfile created: %s" % utils.handle_size(inputfile)) answer = input("Are you sure you want to continue? [Y/n]") if answer.lower() not in ('y', 'yes', ''): self.stdout.write("Quitting") sys.exit(0) inputfile.seek(0) self.dbcommands.run_restore_commands(inputfile)
def test_func(self): filehandle = StringIO('Test string') value = utils.handle_size(filehandle=filehandle) self.assertEqual(value, '11.0 B')
def test_func(self): filehandle = StringIO("Test string") value = utils.handle_size(filehandle=filehandle) self.assertEqual(value, "11.0 B")