improved cleaning

This commit is contained in:
Daniel 2019-09-25 17:18:29 +02:00
parent 5e7298775b
commit a768090ae2
2 changed files with 5 additions and 28 deletions

View file

@ -4,26 +4,7 @@ import subprocess
def autoclean(path):
# remove all files older than 180 days
find = subprocess.Popen([
"sudo find \"" + path +
"\" -type f -mtime +180 -delete -exec echo {} \\;"
],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
shell=True,
universal_newlines=True,)
try:
out_remove, err_remove = find.communicate(timeout=500)
except subprocess.TimeoutExpired:
find.kill()
out_remove, err_remove = find.communicate()
err_rmdir = False
try:
subprocess.run(
"find " + path + " -mindepth 1 -type d -empty -delete",
shell=True, check=True)
except subprocess.CalledProcessError:
err_rmdir = True
return [out_remove, err_remove, err_rmdir]
subprocess.run(["sudo", "find", path, "-type", "f", "-mtime", "+180", "-delete"], shell=False,
timeout=90, check=True)
subprocess.run(["sudo", "find", path, "-mindepth", "1", "-type", "d", "-empty", "-delete"], shell=False,
timeout=90, check=True)

View file

@ -8,11 +8,7 @@ from dirkules import db, app, scheduler
def clean_folders():
for folder in Cleaning.query.all():
if folder.state and os.path.isdir(folder.path):
result = autoclean.autoclean(folder.path)
if result[1] != '':
app.logger.error("Deleting old files exited with errors: {}".format(result[1]))
elif result[2]:
app.logger.error("Removing empty folders exited with errors. No further information available.")
autoclean.autoclean(folder.path)
folder.time = datetime.datetime.now()
elif folder.state and not os.path.isdir(folder.path):
app.logger.error('Folder not found: {}'.format(folder.path))