开发这个功能主要是刚开始要备份几台windows服务器的用户数据,后来写到最后就变成了一个数据备份通用工具了,程序可以根据配置文件的配置进行目录数据的备份,只要指定备份的目录,程序会自动调用系统winrar命令将目录自动生成压缩包,然后自动将压缩包数据上传到一台ftp服务器上,实现自动备份功能,因为是调用的winrar命令,所以要求系统中必须安装winrar,要介绍的基本就这么多,接下来我们开始介绍程序的配置和功能:

配置文件cfg.ini:

[server]

address = 192.168.1.1

port = 2258

[user]

user = cat

password = Test

[upload]

back_target = e:\\webadmin\\web\\flaskr

[winrar_path]

rar_path = C:\\"Program Files"\\WinRAR\\

1

2

3

4

5

6

7

8

9

10

11

12

13

[server]

address=192.168.1.1

port=2258

[user]

user=cat

password=Test

[upload]

back_target=e:\\webadmin\\web\\flaskr

[winrar_path]

rar_path=C:\\"Program Files"\\WinRAR\\

配置文件功能分四部分

1、[server]段用来配置要备份的ftp地址和端口

2、[user]段部分用来设置连接ftp的用户和密码

3、[upload]段用来配置你需要备份的目录,因为python识别windows目录是双”\\”,所以写目录是要用两个斜杠表示目录

4、[winrar_path]段用来设置windwos系统中winrar的安装目录,双斜杠功能同upload段,且“Program Files” 的双引号不能删除。

python代码:

#coding=utf-8

import time

import os.path

import re

import ConfigParser

from ftplib import FTP

import subprocess

from subprocess import Popen,PIPE

cf = ConfigParser.ConfigParser()

cf.read('cfg.ini')

ftp_server = cf.get('server', 'address')

ftp_port = cf.get('server', 'port')

username = cf.get('user', 'user')

password = cf.get('user', 'password')

cmd_path = cf.get('winrar_path', 'rar_path')

cmd_rar = 'rar a -r '

back_target = cf.get('upload', 'back_target')

#save_path = cf.get('upload', 'save_path')

#str_cmd = 'C:\\"Program Files"\\WinRAR\\rar.exe a -r' + ' e:\\webadmin' + time.strftime('%Y%m%d%H%M%S') + '.rar' + ' e:\\webadmin'

str_cmd = cmd_path + cmd_rar + back_target + time.strftime('%Y%m%d%H') + '.rar ' + back_target

pattern = '100%'

def rar_file():

p = subprocess.Popen(str_cmd, shell=True, stdout=PIPE, stderr=PIPE)

stdout,stderror=p.communicate()

match = re.search(pattern, stdout)

if match.start():

return 'ok'

def ftp_conn():

ftp = FTP()

ftp.connect(ftp_server, ftp_port)

return ftp

def ftp_upload():

ftp = ftp_conn()

ftp.login(username,password)

remotepath = os.path.basename(back_target) + time.strftime('%Y%m%d%H') + '.rar'

bufsize = 1024

localpath = os.path.dirname(back_target) + '\\'+ os.path.basename(back_target) + time.strftime('%Y%m%d%H') + '.rar'

fp = open(localpath,'rb')

ftp.storbinary('STOR '+ remotepath ,fp,bufsize)

fp.close()

ftp.quit()

# def ftp_download():

# ftp = ftp_conn()

# ftp.set_debuglevel(2)

# ftp.connect(ftp_server,2258)

# ftp.login(username,password)

# #ftp.set_pasv(1)

# remotepath =r'/MyIPSec.ipsec'

# bufsize = 1024

# localpath =r'e:\i\MyIPSec.ipsec'

# fp = open(localpath,'wb')

# ftp.retrbinary('RETR '+ remotepath ,fp.write,bufsize)

# fp.close()

# ftp.quit()

if __name__ == '__main__':

status = rar_file()

if status == 'ok':

ftp_upload()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

#coding=utf-8

importtime

importos.path

importre

importConfigParser

fromftplibimportFTP

importsubprocess

fromsubprocessimportPopen,PIPE

cf=ConfigParser.ConfigParser()

cf.read('cfg.ini')

ftp_server=cf.get('server','address')

ftp_port=cf.get('server','port')

username=cf.get('user','user')

password=cf.get('user','password')

cmd_path=cf.get('winrar_path','rar_path')

cmd_rar='rar a -r '

back_target=cf.get('upload','back_target')

#save_path = cf.get('upload', 'save_path')

#str_cmd = 'C:\\"Program Files"\\WinRAR\\rar.exe a -r' + ' e:\\webadmin' + time.strftime('%Y%m%d%H%M%S') + '.rar' + ' e:\\webadmin'

str_cmd=cmd_path+cmd_rar+back_target+time.strftime('%Y%m%d%H')+'.rar '+back_target

pattern='100%'

defrar_file():

p=subprocess.Popen(str_cmd,shell=True,stdout=PIPE,stderr=PIPE)

stdout,stderror=p.communicate()

match=re.search(pattern,stdout)

ifmatch.start():

return'ok'

defftp_conn():

ftp=FTP()

ftp.connect(ftp_server,ftp_port)

returnftp

defftp_upload():

ftp=ftp_conn()

ftp.login(username,password)

remotepath=os.path.basename(back_target)+time.strftime('%Y%m%d%H')+'.rar'

bufsize=1024

localpath=os.path.dirname(back_target)+'\\'+os.path.basename(back_target)+time.strftime('%Y%m%d%H')+'.rar'

fp=open(localpath,'rb')

ftp.storbinary('STOR '+remotepath,fp,bufsize)

fp.close()

ftp.quit()

# def ftp_download():

#     ftp = ftp_conn()

#     ftp.set_debuglevel(2)

#     ftp.connect(ftp_server,2258)

#     ftp.login(username,password)

#     #ftp.set_pasv(1)

#     remotepath =r'/MyIPSec.ipsec'

#     bufsize = 1024

#     localpath =r'e:\i\MyIPSec.ipsec'

#     fp = open(localpath,'wb')

#     ftp.retrbinary('RETR '+ remotepath ,fp.write,bufsize)

#     fp.close()

#     ftp.quit()

if__name__=='__main__':

status=rar_file()

ifstatus=='ok':

ftp_upload()

今天代码就不逐行解释了,都比较简单,另外为了方便大家使用,方便每个人使用,我制作了exe版本,需要的兄弟可以直接下载使用,下载地址:http://www.mindg.cn/download/winback_data_to_ftp.zip ,使用中有任何问题,可随时联系我。

python自动备份手机_python实现自动备份windows应用数据相关推荐

  1. python自动备份手机_python实现自动备份文件

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  2. 苹果手机怎么备份所有数据_数据蛙:微信怎么备份手机通讯录,随时备份和恢复手机联系人!...

    微信怎么备份手机通讯录.在日常生活中,许多人都会换手机或者卸载微信,但重新下载微信后又想用以前的通讯录,所以如何备份微信通讯录呢. 微信能备份手机通讯录吗? 实际上,目前微信上通讯录助手功能已经下线. ...

  3. 如何在python中表示微分_Python实现自动微分(Automatic Differentiation)

    什么是自动微分 自动微分(Automatic Differentiation)是什么?微分是函数在某一处的导数值,自动微分就是使用计算机程序自动求解函数在某一处的导数值.自动微分可用于计算神经网络反向 ...

  4. 电脑上的计算机自动打开,手机连接电脑自动打开word

    手机连接电脑弹出Microsoft Office Word 2007 win8系统处理方法:1. 在控制面板-&gt:硬件和声音-&gt:自动播放里,2. iphone手机的设置值是 ...

  5. python自动备份手机_python实现数据库自动备份

    python实现数据库自动备份 设计要求 执行环境centos 7 x64 每天某一个时刻自动执行备份操作,执行时间可调整 数据库备份文件保留在特定目录中,目录路径可设置 自动将当前备份版本发送到指定 ...

  6. python自动备份数据库_Python Mysql自动备份脚本

    测试系统环境  Windows 2003   python 2.5.1  mysql 5.0.1 应该只适用于Win,因为调用了CMD. 增量备份,因为自用,数据库不大. 回头有了需求加上自检测,5天 ...

  7. python文件实时同步_python文件自动同步备份v1.2【运维必备】2020/12/31

    本帖最后由 We. 于 2021-1-4 08:18 编辑 v1版本打包在这里了,感兴趣的自己下来看: 同步备份v1.rar (1.6 KB, 下载次数: 8) 2020-12-30 16:12 上传 ...

  8. python写自动抢购脚本_Python实现自动上京东抢手机

    本文实例为大家分享了Python自动上京东抢手机的具体代码,供大家参考,具体内容如下 上次抢荣耀V9,被京东给恶心到了,所以就写了个简单的Python来自动抢V9.虽然用的是比较蠢的方法,但觉得还是有 ...

  9. python用os模块自动打开软件_Python实现自动打开电脑应用的示例代码

    由于时间原因,有时候可能会错过某个上网课的时间段.因此想要实现自动定时启动DingDing. 新手一枚,如有不当勿喷望大佬指正. 自动打开DingDing可以由两种方法实现: 通过找出找出软件在电脑中 ...

最新文章

  1. posix_kill 信号
  2. java虚拟机规范这本书怎么样_JVM规范系列开篇:为什么要读JVM规范?
  3. Python中的startswith和endswith函数使用实例
  4. 递归算法介绍及Java应用实战
  5. Android开发之Java集合类性能分析
  6. 计算机网络在智能建筑的发展,智能建筑的发展历史和趋势
  7. 实现List按与一个字符串的相似度和字母顺序排序(适用于模糊查询后的排序)...
  8. Spark-Serialization序列化的2种方式解释对比使用场景
  9. React躬行记(8)——样式
  10. 网络攻击盯上民生领域,应对DDoS和APT攻击,如何有效防御?
  11. 商洛师范学院计算机老师,我校在首届全国师范生微课大赛中获佳绩
  12. GDOI2020爆蛋记
  13. 企业跨境电商平台服务解决方案,跨境电子商务贸易业务框架搭建运维
  14. guido正式对外发布python版本的年份_Guido van Rossum正式对外发布Python版本的年份是:______。...
  15. 出书挂名流程 出书挂名步骤
  16. class com.sun.mail.smtp.SMTPAddressFailedException: 550 5.1.1 recipient is not exist
  17. 34-电影排行榜上(布局界面)
  18. 学习笔记 | 百度搜索技巧
  19. 机器学习必备知识之皮尔森系数实现
  20. 【转】用天文方法计算二十四节气(上)

热门文章

  1. linux配置apache服务器项目文档,Apache(Linux)服务器配置文档.doc
  2. C中的运算符优先级和结合性 *p++
  3. poj 1426 BFS
  4. Python内置模块---random
  5. latex中正文前出现一页空白页,且占正文页数
  6. 欧姆字符的编码c语言,《编码:隐匿在计算机软硬件背后的语言》读书笔记
  7. spring整合atomikos实现分布式事务的方法示例_分布式事务一:基于数据库原生分布式事务方案实现...
  8. 解决自动更新时 系统提示“某些设置由你的系统管理员管理”的方法
  9. day2 java的数据转换与强制转换
  10. 21_python基础—单例和 __ new __ 方法