File size: 3,863 Bytes
c49b21b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#!/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()