4591566 发表于 2018-8-6 12:42:03

通过python+ftps远程备份企业数据

#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
  
      zf.write(tar,arcname)
  
    zf.close()
  
#创建以当前日期的目录,并删除昨天目录
  
def check_bak_dir():
  
    global FLAG
  
    os.chdir(file_root_dir)
  
    if os.path.exists(YestodayDir):
  
      os.system("rmdir %s /Q/S" %YestodayDir)    #删除昨天的备份
  
    else:
  
      pass
  
    if not os.path.exists(TodayDir):
  
      print("no %s" %TodayDir)
  
      os.mkdir(TodayDir) #创建目录
  
      FLAG = 0         #通过FLAg标志位来确定是否新创建目录
  
      return FLAG
  
    else:
  
      pass
  

  

  

  
###上传到服务器
  
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
页: [1]
查看完整版本: 通过python+ftps远程备份企业数据