示例#1
0
    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)
示例#2
0
 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)
        )
示例#4
0
    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)
示例#5
0
 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)
示例#6
0
 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())
示例#8
0
 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)
示例#9
0
    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))
示例#10
0
 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)
示例#11
0
 def test_func(self):
     filehandle = StringIO('Test string')
     value = utils.handle_size(filehandle=filehandle)
     self.assertEqual(value, '11.0 B')
示例#12
0
 def test_func(self):
     filehandle = StringIO('Test string')
     value = utils.handle_size(filehandle=filehandle)
     self.assertEqual(value, '11.0 B')
示例#13
0
 def test_func(self):
     filehandle = StringIO("Test string")
     value = utils.handle_size(filehandle=filehandle)
     self.assertEqual(value, "11.0 B")