def get_backups(self): backup_names = self.listdir(self.storage_directory) backups = [] for backup_name in backup_names: backup_dir = utils.path_join(self.storage_directory, backup_name) timestamps = self.listdir(backup_dir) for timestamp in timestamps: increments = self.listdir(utils.path_join(backup_dir, timestamp)) backups.extend(storage.Backup.parse_backups(increments)) return backups
def find_all(self, hostname_backup_name): backups = [] backup_dir = utils.path_join(self.storage_directory, hostname_backup_name) utils.create_dir_tree(backup_dir) timestamps = self.listdir(backup_dir) for timestamp in timestamps: increments = \ self.listdir(utils.path_join(backup_dir, timestamp)) backups.extend(base.Backup.parse_backups(increments, self)) return backups
def _zero_backup_dir(self, backup): """ :param backup: :type backup: freezer.storage.Backup :return: """ return utils.path_join(self.storage_directory, backup.hostname_backup_name, backup.full_backup.timestamp)
def download_meta_file(self, backup): """ :type backup: freezer.storage.Backup :param backup: :return: """ utils.create_dir(self.work_dir) if backup.level == 0: return utils.path_join(self.work_dir, backup.tar()) meta_backup = backup.full_backup.increments[backup.level - 1] zero_backup = self._zero_backup_dir(backup) from_path = utils.path_join(zero_backup, meta_backup.tar()) to_path = utils.path_join(self.work_dir, meta_backup.tar()) if os.path.exists(to_path): os.remove(to_path) self.get_file(from_path, to_path) return to_path
def backup_to_file_path(self, backup): """ :param backup: :type backup: freezer.storage.base.Backup :return: """ return utils.path_join(self._zero_backup_dir(backup), backup)
def rmtree(self, path): files = self.ftp.listdir(path=path) for f in files: filepath = utils.path_join(path, f) if self._is_dir(filepath): self.rmtree(filepath) else: self.ftp.remove(filepath) self.ftp.rmdir(path)
def upload_meta_file(self, backup, meta_file): """ :param backup: :type backup: freezer.storage.base.Backup :param meta_file: :return: """ zero_backup = self._zero_backup_dir(backup) to_path = utils.path_join(zero_backup, backup.tar()) self.put_file(meta_file, to_path)
def download_meta_file(self, backup): """ Downloads meta_data to work_dir of previous backup. :type backup: freezer.storage.base.Backup :param backup: A backup or increment. Current backup is incremental, that means we should download tar_meta for detection new files and changes. If backup.tar_meta is false, raise Exception :return: """ utils.create_dir(self.work_dir) if backup.level == 0: return utils.path_join(self.work_dir, backup.tar()) meta_backup = backup.full_backup.increments[backup.level - 1] if not meta_backup.tar_meta: raise ValueError('Latest update have no tar_meta') to_path = utils.path_join(self.work_dir, meta_backup.tar()) if os.path.exists(to_path): os.remove(to_path) meta_backup.storage.get_file( meta_backup.storage.meta_file_abs_path(meta_backup), to_path) return to_path
def upload_meta_file(self, backup, meta_file): zero_backup = self._zero_backup_dir(backup) to_path = utils.path_join(zero_backup, backup.tar()) self.put_file(meta_file, to_path)
def backup_to_file_path(self, backup): return utils.path_join(self._zero_backup_dir(backup), backup)
def meta_file_abs_path(self, backup): zero_backup = self._zero_backup_dir(backup) return utils.path_join(zero_backup, backup.tar())