通過python+ftps遠程備份企業數據
阿新 • • 發佈:2017-10-12
python 備份目錄
一、需求分析
朋友公司有一臺ERP服務器做了定時輸出備份,設置輸出的目錄是D:\backup\年月日 目錄,其中當前日期(類似20171011)這個是服務器定時備份時自動生成並輸出到這個目錄。想自動備份到遠程服務器,實現數據異地備份。
思路:
python每天定時檢查以當前日期備份的目錄是否存在,不存在自行創建當前日期目前,並刪除前一天的舊目錄。壓縮當前備份數據目錄,並通過上傳到遠程ftps服務器。加入任務計劃每天11.30執行(自動備份在11點)。
二、代碼
#cat upload.py
#coding:utf-8 import urllib,urllib2 from ftplib import FTP_TLS import os import re import sys import time import zipfile import datetime YestodayDir = (datetime.date.today() - datetime.timedelta(days=1)).strftime("%Y%m%d") file_root_dir= "D:\\backup" TodayDir = str(time.strftime("%Y%m%d",time.localtime())) TodayFileName = TodayDir + ‘.zip‘ FLAG = 1 ##壓縮函數 def zip_dir(dirname,zipfilename): filelist = [] if os.path.isfile(dirname): filelist.append(dirname) else : for root, dirs, files in os.walk(dirname): for name in files: filelist.append(os.path.join(root, name)) zf = zipfile.ZipFile(zipfilename, "w", zipfile.zlib.DEFLATED) for tar in filelist: arcname = tar[len(dirname):] zf.write(tar,arcname) zf.close() #創建以當前日期的目錄,並刪除昨天目錄 def check_bak_dir(): global FLAG os.chdir(file_root_dir) if not os.path.exists(TodayDir): print("no %s" %TodayDir) os.mkdir(TodayDir) #創建目錄 FLAG = 0 #通過FLAg標誌位來確定是否新創建目錄 return FLAG else: pass if os.path.exists(YestodayDir): os.system("rmdir %s /Q/S" %YestodayDir) #刪除昨天的備份 ###上傳到服務器 def upload(filename): os.chdir(file_root_dir) ftp = FTP_TLS() ##此處填寫你的ftp用戶名和連接端口 ftp.connect("Your ip or domain",port) ftp.login(‘ftpuser‘, ftpuser‘) ftp.prot_p() ##服務器端存放的目錄 ftp.cwd("home/back") upload_file=unicode(filename, "utf8") #windows f = open(upload_file, ‘rb‘) ftp.storbinary(‘STOR %s‘ % os.path.basename(upload_file),f) f.close() ftp.quit if __name__ == "__main__": check_bak_dir() if os.path.exists(TodayDir) and FLAG: #如果目錄存在前不是新創建,壓縮上傳 print("Diractory is ziping ... ") zip_dir(TodayDir,TodayFileName) print("Upload bakcup ... ") upload(TodayFileName) print("Today %s upload success!" %TodayFileName) print
三、添加計劃任務
開始-->控制面板 --計劃任務--添加計劃任務 類似如下圖:
四、手動執行驗證效果如下
登錄ftps可以看到上傳了20171011.zip壓縮備份文件。
註意:此處代碼為了隱私安全隱去了ftp的地址和端口及用戶名和密碼;另外建議使用ftp + SSL證書登錄。以保障安全。
本文出自 “學無止境,學以致用” 博客,請務必保留此出處http://dyc2005.blog.51cto.com/270872/1971456
通過python+ftps遠程備份企業數據