def _backup(min_interval=MIN_INTERVAL, backup_dir=BACKUP_DIR, data_dir=DATA_DIR): b_file, b_mtime = _youngest_backup(backup_dir) y_mtime = _datetime_mtime(DATA_DIR) #_, y_mtime = _youngest_file(data_dir) # If we have a back-up arch and no file has changed since the back-up or # the delay has not expired, return if b_file is not None and (y_mtime <= b_mtime or (y_mtime - b_mtime) < min_interval): return # Here we do use UTC backup_filename = (_safe_dirname(data_dir) + '-' + datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ') + '.' + TAR_GZ_SUFFIX) backup_path = abspath(join_path(backup_dir, backup_filename)) data_dir_parent = join_path(data_dir, '../') #TODO: Check the exit signals! cmd = 'tar -c -z -f %s -C %s %s' % (backup_path, data_dir_parent, _safe_dirname(data_dir)) tar_p = Popen(split_shlex(cmd)) tar_p.wait() checksum_base = join_path(backup_dir, CHECKSUM_FILENAME) with open(checksum_base + '.' + 'MD5', 'a') as md5_file: # *NIX could have used m5sum instead md5_cmd = 'md5sum %s' % (backup_filename) md5_p = Popen(split_shlex(md5_cmd), stdout=md5_file, cwd=backup_dir) md5_p.wait() with open(checksum_base + '.' + 'SHA256', 'a') as sha256_file: sha256_cmd = 'shasum -a 256 %s' % (backup_filename) sha256_p = Popen(split_shlex(sha256_cmd), stdout=sha256_file, cwd=backup_dir) sha256_p.wait()
def _backup(min_interval=MIN_INTERVAL, backup_dir=BACKUP_DIR, data_dir=DATA_DIR): """ Backup main internal function """ b_file, b_mtime = _youngest_backup(backup_dir) y_mtime = _datetime_mtime(DATA_DIR) #_, y_mtime = _youngest_file(data_dir) # If we have a back-up arch and no file has changed since the back-up or # the delay has not expired, return if b_file is not None and (y_mtime <= b_mtime or (y_mtime - b_mtime) < min_interval): return # Here we do use UTC backup_filename = (_safe_dirname(data_dir) + '-' + datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ') + '.' + TAR_GZ_SUFFIX) backup_path = abspath(join_path(backup_dir, backup_filename)) data_dir_parent = join_path(data_dir, '../') # TODO: Check the exit signals! # TODO: use tarfile anbd gzip modules instead cmd = 'tar -c -z -f %s -C %s %s' % (backup_path, data_dir_parent, _safe_dirname(data_dir)) tar_p = Popen(split_shlex(cmd)) tar_p.wait() _update_checksum(backup_dir, backup_filename)
def _update_checksum(backup_dir, backup_filename): """ Update md5 and SHA256 checksums """ checksum_base = join_path(backup_dir, CHECKSUM_FILENAME) with open(checksum_base + '.' + 'MD5', 'a') as md5_file: # *NIX could have used m5sum instead md5_cmd = 'md5sum %s' % (backup_filename) md5_p = Popen(split_shlex(md5_cmd), stdout=md5_file, cwd=backup_dir) md5_p.wait() with open(checksum_base + '.' + 'SHA256', 'a') as sha256_file: sha256_cmd = 'shasum -a 256 %s' % (backup_filename) sha256_p = Popen(split_shlex(sha256_cmd), stdout=sha256_file, cwd=backup_dir) sha256_p.wait()
def apply_changes(self): p = subprocess.Popen(split_shlex('netplan apply')) p.communicate() self.restart_ifaces() if p.returncode != 0: return n4d.responses.build_successful_call_response(False) if self.resolved_path.exists(): self.systemdmanager.RestartUnit("systemd-resolved.service", "replace") return n4d.responses.build_successful_call_response(True)
def _backup( min_interval=MIN_INTERVAL, backup_dir=BACKUP_DIR, data_dir=DATA_DIR): b_file, b_mtime = _youngest_backup(backup_dir) y_mtime = _datetime_mtime(DATA_DIR) #_, y_mtime = _youngest_file(data_dir) # If we have a back-up arch and no file has changed since the back-up or # the delay has not expired, return if b_file is not None and (y_mtime <= b_mtime or (y_mtime - b_mtime) < min_interval): return # Here we do use UTC backup_filename = (_safe_dirname(data_dir) + '-' + datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%SZ') + '.' + TAR_GZ_SUFFIX) backup_path = abspath(join_path(backup_dir, backup_filename)) data_dir_parent = join_path(data_dir, '../') # TODO: Check the exit signals! cmd = 'tar -c -z -f %s -C %s %s' % (backup_path, data_dir_parent, _safe_dirname(data_dir)) tar_p = Popen(split_shlex(cmd)) tar_p.wait() checksum_base = join_path(backup_dir, CHECKSUM_FILENAME) with open(checksum_base + '.' + 'MD5', 'a') as md5_file: # *NIX could have used m5sum instead md5_cmd = 'md5sum %s' % (backup_filename) md5_p = Popen(split_shlex(md5_cmd), stdout=md5_file, cwd=backup_dir) md5_p.wait() with open(checksum_base + '.' + 'SHA256', 'a') as sha256_file: sha256_cmd = 'shasum -a 256 %s' % (backup_filename) sha256_p = Popen( split_shlex(sha256_cmd), stdout=sha256_file, cwd=backup_dir) sha256_p.wait()
def normalize_and_split(tag): tag_cleansed = tag[1:-1] return split_shlex(tag_cleansed)