def __init__(self, path=None): if path is None: path = defdir s_common.gendir(path, 'cas') s_common.gendir(path, 'hosts') s_common.gendir(path, 'users') self.certdir = s_common.reqdir(path)
def __init__(self, path=None): self.crypto_numbits = 4096 if path is None: path = defdir s_common.gendir(path, 'cas') s_common.gendir(path, 'hosts') s_common.gendir(path, 'users') self.certdir = s_common.reqdir(path)
def __init__(self, path=None): self.crypto_numbits = 4096 self.signing_digest = 'sha256' if path is None: path = defdir s_common.gendir(path, 'cas') s_common.gendir(path, 'hosts') s_common.gendir(path, 'users') self.certdir = s_common.reqdir(path) self.path = path
def backup(srcdir, dstdir, compact=True): ''' Args: compact (bool): whether to optimize storage while copying to the destination ''' tick = s_common.now() srcdir = s_common.reqdir(srcdir) dstdir = s_common.gendir(dstdir) logger.info(f'Starting backup of [{srcdir}]') logger.info(f'Destination dir: [{dstdir}]') for root, dnames, fnames in os.walk(srcdir, topdown=True): relpath = os.path.relpath(root, start=srcdir) for name in list(dnames): # Explicitly skip directory names of 'tmp' to avoid backing up temporary files if name == 'tmp': dnames.remove(name) continue srcpath = s_common.genpath(root, name) dstpath = s_common.genpath(dstdir, relpath, name) if name.endswith('.lmdb'): dnames.remove(name) backup_lmdb(srcpath, dstpath) continue logger.info(f'making dir:{dstpath}') s_common.gendir(dstpath) for name in fnames: srcpath = s_common.genpath(root, name) # skip unix sockets etc... if not os.path.isfile(srcpath): continue dstpath = s_common.genpath(dstdir, relpath, name) logger.info(f'copying: {srcpath} -> {dstpath}') shutil.copy(srcpath, dstpath) tock = s_common.now() logger.info(f'Backup complete. Took [{tock-tick:.2f}] for [{srcdir}]') return
def backup(srcdir, dstdir): tick = s_common.now() srcdir = s_common.reqdir(srcdir) dstdir = s_common.gendir(dstdir) logger.info(f'Starting backup of [{srcdir}]') logger.info(f'Destination dir: [{dstdir}]') for root, dnames, fnames in os.walk(srcdir, topdown=True): relpath = os.path.relpath(root, start=srcdir) for name in list(dnames): srcpath = s_common.genpath(root, name) dstpath = s_common.genpath(dstdir, relpath, name) if name.endswith('.lmdb'): dnames.remove(name) backup_lmdb(srcpath, dstpath) continue logger.info(f'making dir:{dstpath}') s_common.gendir(dstpath) for name in fnames: srcpath = s_common.genpath(root, name) # skip unix sockets etc... if not os.path.isfile(srcpath): continue dstpath = s_common.genpath(dstdir, relpath, name) logger.info(f'copying: {srcpath} -> {dstpath}') shutil.copy(srcpath, dstpath) tock = s_common.now() logger.info(f'Backup complete. Took [{tock-tick:.2f}] for [{srcdir}]') return
def backup(srcdir, dstdir, skipdirs=None, compact=True): ''' Create a backup of a Synapse application. Args: srcdir (str): Path to the directory to backup. dstdir (str): Path to backup target directory. skipdirs (list or None): Optional list of relative directory name glob patterns to exclude from the backup. compact (bool): Whether to optimize storage while copying to the destination. ''' tick = s_common.now() srcdir = s_common.reqdir(srcdir) dstdir = s_common.gendir(dstdir) if skipdirs is None: skipdirs = [] # Always avoid backing up temporary directories skipdirs.append('**/tmp') logger.info(f'Starting backup of [{srcdir}]') logger.info(f'Destination dir: [{dstdir}]') for root, dnames, fnames in os.walk(srcdir, topdown=True): relpath = os.path.relpath(root, start=srcdir) for name in list(dnames): srcpath = s_common.genpath(root, name) relname = os.path.join(relpath, name) if any([fnmatch.fnmatch(relname, pattern) for pattern in skipdirs]): logger.info(f'skipping dir:{srcpath}') dnames.remove(name) continue dstpath = s_common.genpath(dstdir, relname) if name.endswith('.lmdb'): dnames.remove(name) backup_lmdb(srcpath, dstpath, compact) continue logger.info(f'making dir:{dstpath}') s_common.gendir(dstpath) for name in fnames: srcpath = s_common.genpath(root, name) # skip unix sockets etc... if not os.path.isfile(srcpath): continue dstpath = s_common.genpath(dstdir, relpath, name) logger.info(f'copying: {srcpath} -> {dstpath}') shutil.copy(srcpath, dstpath) tock = s_common.now() logger.info(f'Backup complete. Took [{tock-tick:.2f}] for [{srcdir}]') return
def txnbackup(lmdbinfo, srcdir, dstdir, skipdirs=None): ''' Create a backup of a Synapse application under a (hopefully consistent) set of transactions. Args: lmdbinfo(Dict[str, Tuple[lmdb.Environment, lmdb.Transaction]]): Maps of path to environment, transaction srcdir (str): Path to the directory to backup. dstdir (str): Path to backup target directory. skipdirs (list or None): Optional list of relative directory name glob patterns to exclude from the backup. Note: Running this method from the same process as a running user of the directory may lead to a segmentation fault ''' tick = s_common.now() srcdir = s_common.reqdir(srcdir) dstdir = s_common.gendir(dstdir) if skipdirs is None: skipdirs = [] # Always avoid backing up temporary directories skipdirs.append('**/tmp') logger.info(f'Starting backup of [{srcdir}]') logger.info(f'Destination dir: [{dstdir}]') for root, dnames, fnames in os.walk(srcdir, topdown=True): relpath = os.path.relpath(root, start=srcdir) for name in list(dnames): srcpath = s_common.genpath(root, name) relname = os.path.join(relpath, name) if any([fnmatch.fnmatch(relname, pattern) for pattern in skipdirs]): logger.info(f'skipping dir:{srcpath}') dnames.remove(name) continue dstpath = s_common.genpath(dstdir, relname) info = lmdbinfo.get(os.path.abspath(srcpath)) if info is not None: logger.info('backing up lmdb file: %s', srcpath) dnames.remove(name) env, txn = info backup_lmdb(env, dstpath, txn=txn) continue if name.endswith('.lmdb'): logger.warning('lmdb file %s not copied', srcpath) dnames.remove(name) continue logger.info(f'making dir:{dstpath}') s_common.gendir(dstpath) for name in fnames: srcpath = s_common.genpath(root, name) # skip unix sockets etc... if not os.path.isfile(srcpath): continue dstpath = s_common.genpath(dstdir, relpath, name) logger.info(f'copying: {srcpath} -> {dstpath}') shutil.copy(srcpath, dstpath) tock = s_common.now() logger.info(f'Backup complete. Took [{tock-tick:.2f}] for [{srcdir}]') return