Skip to content
Snippets Groups Projects
remove_empty_dirs.py 1.24 KiB
Newer Older
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
'''
Script to remove empty dirs from FTP incoming dir.
'''
import datetime
import os
import shutil
import sys
import traceback


INCOMING_DIR = '/home/ftp/storage/incoming/'
DAYS_OLD = 1


def _can_be_removed(path):
    if not os.path.isdir(path):
        return False
    for name in os.listdir(path):
        subpath = os.path.join(path, name)
        if not _can_be_removed(subpath):
            return False
    mtime = os.path.getmtime(path)
    mtime = datetime.datetime.fromtimestamp(mtime)
    if mtime < datetime.datetime.now() - datetime.timedelta(days=DAYS_OLD):
        return True
    return False


if __name__ == '__main__':
    script_name = os.path.basename(__file__)
    try:
        if not os.path.isdir(INCOMING_DIR):
            print('%s: The FTP incoming dir does not exist (%s).' % (script_name, INCOMING_DIR))
            sys.exit(1)

        for name in os.listdir(INCOMING_DIR):
            path = os.path.join(INCOMING_DIR, name)
            if _can_be_removed(path):
                shutil.rmtree(path)
                print('%s: Dir "%s" removed.' % (script_name, path))
    except Exception:
        print('%s: Script crashed:\n%s' % (script_name, traceback.format_exc()))
        sys.exit(1)