diff --git a/functions/helpers.py b/functions/helpers.py index 486f6d2..7620d73 100755 --- a/functions/helpers.py +++ b/functions/helpers.py @@ -39,3 +39,14 @@ def findstring(text, string): def countlines(string: str) -> int: """Count number of lines in a variable""" return len(string.splitlines()) + + +def convert_bytes(size): + """Convert bytes to KB, MB etc depending on size""" + power = 1024 + level = 0 + labels = {0 : 'B', 1: 'KB', 2: 'MB', 3: 'GB', 4: 'TB'} + while size > power: + size /= power + level += 1 + return f"{round(size, 2)} {labels[level]}" diff --git a/seafile_mirror.py b/seafile_mirror.py index b1e3273..de28f92 100755 --- a/seafile_mirror.py +++ b/seafile_mirror.py @@ -15,7 +15,7 @@ from time import sleep import yaml from functions.cachedb import db_read -from functions.helpers import findstring, get_lock +from functions.helpers import convert_bytes, findstring, get_lock from functions.seafile import ( sf_bump_cache_status, sf_desync_all, @@ -187,8 +187,20 @@ def main(): libsdone.append(libname) sf_bump_cache_status(cache, libid, status="synced", duration=syncduration) + # Get size of directory (libdir) in MB + # Note: this is not fully equivalent with what `du` would show. It's + # caused by the fact that `du` considers filesystem block sizes + libdirsize = convert_bytes( + sum(f.stat().st_size for f in libdir.glob("**/*") if f.is_file()) + ) + logging.info( - "Library %s (%s) has been re-synced to %s", libname, libid, libdir + "Library %s (%s) has been re-synced to %s. Duration: %s minutes. Size: %s", + libname, + libid, + libdir, + round(syncduration), + libdirsize, ) logging.info("Fully re-synced the following libraries: %s", ", ".join(libsdone))