def do_merge(backups, precision, dry_run, include_latest, skip_errors,
**kwargs):
data = sorted(os.listdir(backups))
if not data:
raise MergeError("Nothing found.")
groups, helper = tee(group_by_timestamp(data, precision * 60 * 60,
skip_errors))
next(helper, None)
for group in groups:
try:
next(helper)
except StopIteration:
if not include_latest:
logger.info("Folders `{0}` were excluded from merge because "
"they can be not "
"complete.".format(', '.join(group)))
continue
logger.info("GROUP: {0}".format(group))
if will_override(backups, group):
raise MergeError("Group `{0}` contains overlapping files. May be "
"precision was bigger then backup "
"periodicity.".format(group))
dst = os.path.join(backups, group.pop(0))
for item in group:
src = os.path.join(backups, item)
dir_util.copy_tree(src, dst, verbose=True, dry_run=dry_run)
dir_util.remove_tree(src, verbose=True, dry_run=dry_run)
backup_node_merge.py 文件源码
python
阅读 16
收藏 0
点赞 0
评论 0
评论列表
文章目录