~trb143/+junk/scripts

« back to all changes in this revision

Viewing changes to backup_del.py

  • Committer: Tim Bentley
  • Date: 2011-03-22 18:29:38 UTC
  • Revision ID: tim.bentley@gmail.com-20110322182938-x2vzz2y469pbl2kh
Initial import

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/env python
 
2
import time
 
3
import os
 
4
import socket
 
5
from os.path import isdir 
 
6
 
 
7
version  = "0.1"
 
8
base_path = ""
 
9
dev_path= "/media/backup"
 
10
prod_path = "/opt/backup"
 
11
server   = "tigger2"
 
12
full     = "full"
 
13
inc      = "inc"
 
14
daily    = "daily"
 
15
months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
 
16
keep_months = 3
 
17
month_list= []
 
18
dir_del_list = []
 
19
file_del_list = []
 
20
debug = False
 
21
prod = False
 
22
 
 
23
 
 
24
def init():
 
25
  "Initialise varables and process args"
 
26
  print 'Backup - Deletion Program \n Version %s ' % (version)
 
27
  print '--------------------------------'
 
28
  #print time.time()
 
29
  m = int(time.strftime('%m'))-1 # sort out array as months is zero based
 
30
  for i in range(keep_months):
 
31
    month_list.append(months[m-i])
 
32
  dp(month_list)
 
33
  global base_path 
 
34
  global prod
 
35
  base_path = dev_path
 
36
  if socket.gethostname() == "tigger2.charlwoods143.home":
 
37
    base_path=prod_path
 
38
    prod = True
 
39
  print "Path               - %s " %socket.gethostname()
 
40
  print "Data Path          - %s " % (base_path)
 
41
  
 
42
def clearfiles(d):
 
43
 "delete files in directory before we delete dir"
 
44
 fc=0
 
45
 for f in os.listdir(d):
 
46
    os.remove(os.path.join(d,f))
 
47
    fc+=1
 
48
 return fc  
 
49
 
 
50
def remove_old_dirs():
 
51
  "Tidy up now we have finished"
 
52
  dc = 0
 
53
  fc = 0
 
54
  fc1 = 0
 
55
  for d in dir_del_list:
 
56
    dp(d)
 
57
    if prod == True:
 
58
        fc1 += clearfiles(d)
 
59
        os.rmdir(d)
 
60
    dc +=1
 
61
  for d in file_del_list:
 
62
    dp(d)
 
63
    if prod == True:
 
64
        os.remove(d)
 
65
    fc +=1
 
66
    
 
67
  print 'Directories        - deleted %d ' % (dc)
 
68
  print 'Directorie files   - deleted %d ' % (fc1)  
 
69
  print 'Files              - deleted %d ' % (fc)
 
70
 
 
71
def dp(var):
 
72
 "Simple Debug Print statement"
 
73
 if debug == True:
 
74
    print var
 
75
    
 
76
def split_file(f):
 
77
  "Split file name and return day"
 
78
  l = f.split(".")
 
79
  return l[0] 
 
80
        
 
81
def split_dir(d):
 
82
  "Split Directory name and return month"
 
83
  l = d.split("_")
 
84
  return l[1]
 
85
 
 
86
def delete_old_months(period):
 
87
  ""
 
88
  dir = os.path.join(base_path,period,server)
 
89
  for f in os.listdir(dir):
 
90
    if isdir(os.path.join(dir,f)):
 
91
      mc = 0
 
92
      for ml in month_list:
 
93
        if ml != split_dir(f):
 
94
          mc += 1
 
95
      if mc == 3:
 
96
        dir_del_list.append(os.path.join(dir,f))
 
97
        
 
98
def delete_old_files(period):
 
99
    ""
 
100
    dir = os.path.join(base_path,period,server)
 
101
    for f in os.listdir(dir):
 
102
        if isdir(os.path.join(dir,f)):
 
103
            dir1=os.path.join(base_path,period,server,f,)
 
104
            mx = 0
 
105
            for f1 in os.listdir(dir1):
 
106
                if split_file(f1) > mx:
 
107
                    mx = split_file(f1)
 
108
                    
 
109
            for f1 in os.listdir(dir1):
 
110
                if split_file(f1) != mx:
 
111
                    file_del_list.append(os.path.join(dir1,f1))
 
112
            
 
113
def delete_old_files_daily(daily,full):
 
114
    ""
 
115
    dir = os.path.join(base_path,full,server)
 
116
    for f in os.listdir(dir):
 
117
        if isdir(os.path.join(dir,f)):
 
118
            dir1=os.path.join(base_path,full,server,f,)
 
119
            mx = 0
 
120
            for f1 in os.listdir(dir1):
 
121
                if split_file(f1) > mx:
 
122
                    mx = split_file(f1)
 
123
                    
 
124
            dir2 = os.path.join(base_path,daily,server,f)
 
125
            for f2 in os.listdir(dir2):
 
126
                if int(split_file(f2)) < int(mx):
 
127
                    file_del_list.append(os.path.join(dir2,f2))
 
128
            
 
129
def main():
 
130
  ""
 
131
  delete_old_months(full)
 
132
  delete_old_months(inc)
 
133
  delete_old_months(daily)
 
134
  delete_old_files(inc)
 
135
  delete_old_files(full)
 
136
  delete_old_files_daily(daily,full)
 
137
  
 
138
  remove_old_dirs();
 
139
 
 
140
  
 
141
if __name__ == "__main__":
 
142
  init()
 
143
  main()