Maaroufabousaleh
f
c49b21b
#!/usr/bin/env python3
"""
Cleanup script to manage disk space and prevent service issues
"""
import os
import shutil
import glob
from datetime import datetime, timedelta
def cleanup_logs():
"""Clean up old log files"""
log_dirs = ["/data/logs", "/var/log"]
for log_dir in log_dirs:
if os.path.exists(log_dir):
# Remove log files older than 7 days
cutoff_date = datetime.now() - timedelta(days=7)
for log_file in glob.glob(os.path.join(log_dir, "*.log*")):
try:
file_time = datetime.fromtimestamp(os.path.getmtime(log_file))
if file_time < cutoff_date:
os.remove(log_file)
print(f"[Cleanup] Removed old log: {log_file}")
except Exception as e:
print(f"[Cleanup] Error removing {log_file}: {e}")
def cleanup_temp_files():
"""Clean up temporary files"""
temp_dirs = ["/tmp", "/data/merged/temp"]
for temp_dir in temp_dirs:
if os.path.exists(temp_dir):
# Remove files older than 1 day
cutoff_date = datetime.now() - timedelta(days=1)
for temp_file in glob.glob(os.path.join(temp_dir, "*")):
try:
if os.path.isfile(temp_file):
file_time = datetime.fromtimestamp(os.path.getmtime(temp_file))
if file_time < cutoff_date:
os.remove(temp_file)
print(f"[Cleanup] Removed temp file: {temp_file}")
except Exception as e:
print(f"[Cleanup] Error removing {temp_file}: {e}")
def cleanup_old_data():
"""Clean up old data files to save space"""
# Keep only last 30 days of archived data
archive_dir = "/data/merged/archive"
if os.path.exists(archive_dir):
cutoff_date = datetime.now() - timedelta(days=30)
for archive_folder in os.listdir(archive_dir):
folder_path = os.path.join(archive_dir, archive_folder)
if os.path.isdir(folder_path):
try:
folder_time = datetime.fromtimestamp(os.path.getmtime(folder_path))
if folder_time < cutoff_date:
shutil.rmtree(folder_path)
print(f"[Cleanup] Removed old archive: {folder_path}")
except Exception as e:
print(f"[Cleanup] Error removing {folder_path}: {e}")
def get_disk_usage():
"""Get current disk usage"""
try:
import psutil
# Check disk usage for the data mount if present
disk_usage = psutil.disk_usage('/data' if os.path.exists('/data') else '/')
free_gb = disk_usage.free / (1024**3)
used_percent = (disk_usage.used / disk_usage.total) * 100
return free_gb, used_percent
except Exception:
return None, None
def main():
"""Main cleanup function"""
print(f"[Cleanup] Starting cleanup at {datetime.now()}")
# Check disk usage before cleanup
free_before, used_before = get_disk_usage()
if free_before:
print(f"[Cleanup] Disk usage before: {used_before:.1f}% used, {free_before:.1f}GB free")
# Run cleanup tasks
cleanup_logs()
cleanup_temp_files()
cleanup_old_data()
# Check disk usage after cleanup
free_after, used_after = get_disk_usage()
if free_after and free_before:
freed_space = free_after - free_before
print(f"[Cleanup] Disk usage after: {used_after:.1f}% used, {free_after:.1f}GB free")
if freed_space > 0:
print(f"[Cleanup] Freed {freed_space:.2f}GB of disk space")
print(f"[Cleanup] Cleanup completed at {datetime.now()}")
if __name__ == "__main__":
main()