Hàng ngày hệ thống backup ra file và sau đó được chuyển sang một ổ SAN backup lại thuộc một dải mạng khác. Job chuyển file này hoạt động tốt nhưng thỉnh thoảng bị lỗi do mạng có trục trặc. Việc check xem file có được gửi sang hay không rất quan trọng để đảm bảo an toàn hệ thống. Trước đây ở công ty cũ toàn check thủ công bằng cách FTP vào ổ SAN để kiểm tra, sang công ty mới mình quyết định viết job kiểm tra việc này.
Job này hàng ngày chạy có nhiệm vụ kiểm tra file sáng sớm nay có được copy thành công sang ổ SAN hay không. Code mình viết trên Python, server là Window nên mình dùng Task Schedule để thực thư file bath gọi đoạn lệnh Python. Dù có hay không nó sẽ gửi email thông báo tới cho mình, việc hàng ngày của mình giờ chỉ là check email và thỉnh thoảng vào kiểm tra xem job chạy có ổn định hay không.
Hiện tại đã có job xóa các file backup cũ cách đây 1 tuần, nhưng nếu có trường hợp đột xuất việc file backup có dung lượng bất thường hoặc ổ cứng đầy (vì 1 lý do nào đó) thì mình vẫn chưa có job cách bảo.
import os from subprocess import Popen, PIPE import smtplib import sys from datetime import datetime, timedelta now = datetime.now() yesterday=datetime.strftime(datetime.now() - timedelta(1), '%Y%d%m') abc="G:\Export_COSREP\cosrep_exp_full"+str(yesterday)+".dmp" subject = "Bios server export " + '\n\r' msg = "1" if os.path.exists(abc) == False: msg = "File export is not OK. Not found file: " + abc else: msg = "File export is OK. Found file: " + abc sender = '[email protected]' message = 'From: Mail [email protected] ' + '\n' + 'To: ' receivers = ['[email protected]','[email protected]'] receivers = ['[email protected]'] count = 0 receipent_list = '' for each_receipent in receivers: if count < len(receivers) -1: receipent_list = receipent_list + each_receipent + ',' else: receipent_list = receipent_list + each_receipent count = count + 1 message = message + receipent_list + '\n' message = message + 'Subject: ' + subject + '\n\r' message = message + msg + '\n' try: smtpObj = smtplib.SMTP('mail.trituenhantao.org') smtpObj.sendmail(sender, receivers, message) print("Successfully sent email") except SMTPException: print("Error: unable to send email")