mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2024-11-22 04:31:13 +01:00
Implementing the skipping of used processes
This commit is contained in:
parent
36e41b8c99
commit
63b0cc4a3a
@ -2,7 +2,7 @@ import psutil
|
|||||||
import shutil
|
import shutil
|
||||||
import os
|
import os
|
||||||
import argparse
|
import argparse
|
||||||
import sys
|
import subprocess
|
||||||
|
|
||||||
# Validating arguments
|
# Validating arguments
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
@ -12,8 +12,16 @@ args = parser.parse_args()
|
|||||||
|
|
||||||
def print_used_disc_space():
|
def print_used_disc_space():
|
||||||
print("%d %% of disk %s are used" % (psutil.disk_usage(args.backups_folder_path).percent,args.backups_folder_path))
|
print("%d %% of disk %s are used" % (psutil.disk_usage(args.backups_folder_path).percent,args.backups_folder_path))
|
||||||
|
|
||||||
warning_counter=0
|
def is_directory_used_by_another_process(directory_path):
|
||||||
|
command= "lsof " + directory_path
|
||||||
|
process = subprocess.Popen([command], stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
|
||||||
|
output, error = process.communicate()
|
||||||
|
if error:
|
||||||
|
raise Exception(error.strip())
|
||||||
|
if output:
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
for host_backup_directory_name in os.listdir(args.backups_folder_path):
|
for host_backup_directory_name in os.listdir(args.backups_folder_path):
|
||||||
host_backup_directory_path = os.path.join(args.backups_folder_path, host_backup_directory_name)
|
host_backup_directory_path = os.path.join(args.backups_folder_path, host_backup_directory_name)
|
||||||
@ -24,27 +32,29 @@ for host_backup_directory_name in os.listdir(args.backups_folder_path):
|
|||||||
|
|
||||||
versions = os.listdir(versions_directory)
|
versions = os.listdir(versions_directory)
|
||||||
versions.sort(reverse=False)
|
versions.sort(reverse=False)
|
||||||
versions_counter=len(versions)
|
|
||||||
|
|
||||||
print_used_disc_space()
|
print_used_disc_space()
|
||||||
for version in versions:
|
for version in versions:
|
||||||
version_path=os.path.join(versions_directory, version)
|
version_path=os.path.join(versions_directory, version)
|
||||||
version_status_pulling_path=os.path.join(versions_directory, version, ".pulling")
|
version_status_pulling_path=os.path.join(versions_directory, version, ".pulling")
|
||||||
print("Checking directory %s ..." % (version_path))
|
print("Checking directory %s ..." % (version_path))
|
||||||
|
if version == versions[-1]:
|
||||||
|
print("Directory %s contains the last version of the backup. Skipped." % (version_path))
|
||||||
|
continue
|
||||||
|
|
||||||
|
if is_directory_used_by_another_process(version_path):
|
||||||
|
print("Directory %s is used by another process. Skipped." % (version_path))
|
||||||
|
continue
|
||||||
|
|
||||||
if psutil.disk_usage(args.backups_folder_path).percent > args.maximum_backup_size_percent:
|
if psutil.disk_usage(args.backups_folder_path).percent > args.maximum_backup_size_percent:
|
||||||
if versions_counter >= 1:
|
print("Deleting %s to free space." % (version_path))
|
||||||
print("Deleting %s to free space" % (version_path))
|
shutil.rmtree(version_path)
|
||||||
shutil.rmtree(version_path)
|
continue
|
||||||
versions_counter-=1
|
|
||||||
else:
|
if os.path.exists(version_status_pulling_path):
|
||||||
print("Deletion not possible. There needs to be at least one backup version")
|
print("Deleting %s due to unfinished pull." % (version_path))
|
||||||
warning_counter+=1
|
shutil.rmtree(version_path)
|
||||||
elif os.path.exists(version_status_pulling_path):
|
continue
|
||||||
last_version=versions[-1]
|
|
||||||
if last_version != version:
|
|
||||||
print("Deleting %s due to unfinished pull" % (version_path))
|
|
||||||
shutil.rmtree(version_path)
|
|
||||||
versions_counter-=1
|
|
||||||
print_used_disc_space()
|
print_used_disc_space()
|
||||||
print("Cleaning up finished.")
|
print("Cleaning up finished.")
|
||||||
sys.exit(warning_counter)
|
|
@ -2,6 +2,12 @@
|
|||||||
pip:
|
pip:
|
||||||
name: psutil
|
name: psutil
|
||||||
|
|
||||||
|
- name: install lsof
|
||||||
|
community.general.pacman:
|
||||||
|
name:
|
||||||
|
- lsof
|
||||||
|
state: present
|
||||||
|
|
||||||
- name: "create {{docker_backups_cleanup}}"
|
- name: "create {{docker_backups_cleanup}}"
|
||||||
file:
|
file:
|
||||||
path: "{{docker_backups_cleanup}}"
|
path: "{{docker_backups_cleanup}}"
|
||||||
|
Loading…
Reference in New Issue
Block a user