Skip to content
Snippets Groups Projects
Commit e44474d3 authored by Daniele Nicolodi's avatar Daniele Nicolodi
Browse files

datasync: Count error encountered during sync

parent 63e6f56e
No related branches found
No related tags found
No related merge requests found
......@@ -16,21 +16,25 @@ from ptblab import terminal
class Stats:
def __init__(self):
self.n_total = 0
self.n_errors = 0
self.n_copied = 0
self.size_copied = 0
self.start_time = time.time()
def update(self, n_total, n_copied, size_copied):
def update(self, n_total, n_errors, n_copied, size_copied):
self.n_total += n_total
self.n_errors += n_errors
self.n_copied += n_copied
self.size_copied += size_copied
return self
def __str__(self):
return \
f'copied {self.n_copied} of {self.n_total} files '\
f'{self.size_copied * 1e-6:.3f} MB ' \
f'in {time.time() - self.start_time:.3f} s'
f'{self.n_total} files ' \
f'{self.n_errors} errors ' \
f'{self.n_copied} copied ' \
f'{self.size_copied * 1e-6:.3f} MB in ' \
f'{time.time() - self.start_time:.3f} s'
def sync(logger, src, dst, recursive, include, exclude, dry_run, prefix=None, stats=None):
......@@ -42,6 +46,7 @@ def sync(logger, src, dst, recursive, include, exclude, dry_run, prefix=None, st
t = time.time()
n_total = 0
n_errors = 0
n_copied = 0
size_copied = 0
......@@ -113,6 +118,7 @@ def sync(logger, src, dst, recursive, include, exclude, dry_run, prefix=None, st
# Ignore ``PermissionError`` obtained when process cannot
# access the file because it is being used by another process.
logger.info(f'permission error while copying {entry}')
n_errors += 1
continue
logger.debug(f'moving {tmp_path} to {dst_path}')
......@@ -123,7 +129,7 @@ def sync(logger, src, dst, recursive, include, exclude, dry_run, prefix=None, st
logger.info(f'{src}: copied {n_copied} of {n_total} files {size_copied * 1e-6:.3f} Mb in {time.time() - t:.3f} secods')
return stats.update(n_total, n_copied, size_copied)
return stats.update(n_total, n_errors, n_copied, size_copied)
def tick(interval):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment