打包-备份工具

有时候我们一些windows上的服务器内容需要做双盘备份,但是又没有很多的资源。这时候需要有一个工具将需要备份的内容打包,然后自动上传到另外一个服务器上。下面是python代码:

 

"""本工具的功能是将某个目录下的东西打包成zip文件,然后上传到FTP上"""

from zipfile import *
from os.path import basename, isdir
from os import listdir, remove, stat
from ftplib import FTP
import time
import sys

def traverse(path):
 prefix =  path
 if(isdir(path)):
  for item in listdir(path):
   traverse(path+'/'+item)
 else:
  print prefix
  my_zipfile = ZipFile(my_zipfile_name,"a",ZIP_DEFLATED)
  my_zipfile.write(prefix)
  my_zipfile.close()

if __name__=='__main__':
## 第一行为说明,第二行为文件目录,第三行为ftp的ip,第四行为ftp端口,第五行为ftp用户,第六行为ftp密码,第七行为需要存到ftp的路径,第八行1时为保留本地压缩数据0时为不保留
    config_file = open("config.txt","r")
    config = config_file.readlines()
    config_file.close()
    path_to_zip = config[1][0:-1]
    ftp_ip = config[2][0:-1]
    ftp_port = config[3][0:-1]
    ftp_user = config[4][0:-1]
    ftp_passwd = config[5][0:-1]
    ftp_path = config[6][0:-1]
    is_save = config[7][0:-1]
   
## 打开log文件,输出重定向
    log_file = open("log/"+time.strftime('%Y%m%d',time.localtime())+".log","w")
    sys_stdout = sys.stdout
    sys_stderr = sys.stderr
    #sys.stdout.close()
    #sys.stderr.close()
    sys.stdout = log_file
    sys.stderr = log_file
    #sys.stdout = sys_stdout
    #sys.stderr = sys_stderr
    print "/n/n-------------------------------------------"
    print time.strftime('%Y%m%d%h%M',time.localtime())
    print "-------------------------------------------"

## 压缩打包指定目录下的所有文件
    print "正在打包………………"
    my_zipfile_name = "files/"+time.strftime('%Y%m%d',time.localtime())+".zip"
    my_zipfile = ZipFile(my_zipfile_name,"w",ZIP_DEFLATED)
    my_zipfile.close()
    traverse(path_to_zip)
    print "打包完毕,大小为"+str(stat(my_zipfile_name)[6])

## 将所得文件发送到ftp指定路径
    print "连接ftp"
    ftp = FTP()
    ftp.debug(2)
    ftp.connect(ftp_ip, ftp_port)
    ftp.login(ftp_user, ftp_passwd)
    bufsize = 1024
    file_handler = open(my_zipfile_name,"rb")
    print "正在传送………………"
    ftp.cwd(ftp_path)
    ftp.storbinary('STOR '+my_zipfile_name[6:],file_handler,bufsize)
    file_handler.close()
    ftp.close()
    print "完成传送"
   
## 如果第八行为0,删除已处理文件
    if is_save == '0':
        print "正在删除"+my_zipfile_name
        remove(my_zipfile_name)
        print "已经完成删除"
   
## 关闭log文件
    log_file.close()
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值