Răsfoiți Sursa

--free-bytes, walk `ROOT_DIR`, debug print

Fabian Peter Hammerle 5 ani în urmă
comite
3d760e1159
1 a modificat fișierele cu 33 adăugiri și 0 ștergeri
  1. 33 0
      keep_disk_free.py

+ 33 - 0
keep_disk_free.py

@@ -0,0 +1,33 @@
+import argparse
+import os
+import shutil
+import logging
+
+
+def main():
+    argparser = argparse.ArgumentParser(
+        description='Delete files with earliest modification date'
+                    ' until a minimum of --free-bytes are available on the respective disk')
+    argparser.add_argument('--free-bytes', type=int, required=True)
+    argparser.add_argument('root_dir_path', metavar='ROOT_DIR')
+    args = argparser.parse_args()
+    logging.basicConfig(level=logging.DEBUG,
+                        format='%(asctime)s:%(levelname)s:%(message)s',
+                        datefmt='%Y-%m-%dT%H:%M:%S%z')
+    if shutil.disk_usage(args.root_dir_path).free >= args.free_bytes:
+        logging.debug('Requirement already fulfilled')
+        return
+    file_paths = [os.path.join(dirpath, filename)
+                  for dirpath, _, filenames in os.walk(args.root_dir_path)
+                  for filename in filenames]
+    removed_files_counter = 0
+    for file_path in sorted(file_paths, key=lambda p: os.stat(p).st_mtime):
+        if shutil.disk_usage(args.root_dir_path).free >= args.free_bytes:
+            break
+        logging.debug('Removed file %s', file_path)
+        removed_files_counter += 1
+    logging.info('Removed %d files', removed_files_counter)
+
+
+if __name__ == '__main__':
+    main()