[tor-commits] [sbws/master] Add function to find old v3bw files

pastly at torproject.org pastly at torproject.org
Thu Aug 9 14:21:19 UTC 2018


commit 1b7a24dfc132e0455ca43133f907dd51452ccfa0
Author: juga0 <juga at riseup.net>
Date:   Tue Jul 17 16:57:11 2018 +0000

    Add function to find old v3bw files
---
 sbws/core/cleanup.py | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/sbws/core/cleanup.py b/sbws/core/cleanup.py
index 3c4c8f8..bd3300c 100644
--- a/sbws/core/cleanup.py
+++ b/sbws/core/cleanup.py
@@ -1,5 +1,6 @@
 from sbws.util.filelock import DirectoryLock
 from sbws.globals import (fail_hard, is_initted)
+from sbws.util.timestamp import unixts_to_dt_obj
 from argparse import ArgumentDefaultsHelpFormatter
 from datetime import datetime
 from datetime import timedelta
@@ -32,6 +33,33 @@ def gen_parser(sub):
                    help='Do not clean v3bw files')
 
 
+def _get_files_mtime_older_than(dname, days_delta, extensions):
+    """Return files which modification time is older than days_delta
+    and which extension is one of the extensions."""
+    assert os.path.isdir(dname)
+    assert isinstance(days_delta, int)
+    assert isinstance(extensions, list)
+    for ext in extensions:
+        assert isinstance(ext, str)
+        assert ext[0] == '.'
+    # Determine oldest allowed date
+    today = datetime.utcfromtimestamp(time.time())
+    oldest_day = today - timedelta(days=days_delta)
+    for root, dirs, files in os.walk(dname):
+        for f in files:
+            fname = os.path.join(root, f)
+            _, ext = os.path.splitext(fname)
+            if ext not in extensions:
+                log.debug('Ignoring %s because it doesn\'t have extension '
+                          '%s', fname, ext)
+                continue
+            # using file modification time instead of parsing the name
+            # of the file.
+            filedt = unixts_to_dt_obj(
+                os.stat(fname, follow_symlinks=False).st_mtime)
+            if filedt < oldest_day and os.path.splitext:
+                yield fname
+
 
 def _get_older_files_than(dname, num_days_ago, extensions):
     assert os.path.isdir(dname)





More information about the tor-commits mailing list