python自动备份手机_python实现自动备份windows应用数据
开发这个功能主要是刚开始要备份几台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应用数据相关推荐
- python自动备份手机_python实现自动备份文件
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- 苹果手机怎么备份所有数据_数据蛙:微信怎么备份手机通讯录,随时备份和恢复手机联系人!...
微信怎么备份手机通讯录.在日常生活中,许多人都会换手机或者卸载微信,但重新下载微信后又想用以前的通讯录,所以如何备份微信通讯录呢. 微信能备份手机通讯录吗? 实际上,目前微信上通讯录助手功能已经下线. ...
- 如何在python中表示微分_Python实现自动微分(Automatic Differentiation)
什么是自动微分 自动微分(Automatic Differentiation)是什么?微分是函数在某一处的导数值,自动微分就是使用计算机程序自动求解函数在某一处的导数值.自动微分可用于计算神经网络反向 ...
- 电脑上的计算机自动打开,手机连接电脑自动打开word
手机连接电脑弹出Microsoft Office Word 2007 win8系统处理方法:1. 在控制面板->:硬件和声音->:自动播放里,2. iphone手机的设置值是 ...
- python自动备份手机_python实现数据库自动备份
python实现数据库自动备份 设计要求 执行环境centos 7 x64 每天某一个时刻自动执行备份操作,执行时间可调整 数据库备份文件保留在特定目录中,目录路径可设置 自动将当前备份版本发送到指定 ...
- python自动备份数据库_Python Mysql自动备份脚本
测试系统环境 Windows 2003 python 2.5.1 mysql 5.0.1 应该只适用于Win,因为调用了CMD. 增量备份,因为自用,数据库不大. 回头有了需求加上自检测,5天 ...
- 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 上传 ...
- python写自动抢购脚本_Python实现自动上京东抢手机
本文实例为大家分享了Python自动上京东抢手机的具体代码,供大家参考,具体内容如下 上次抢荣耀V9,被京东给恶心到了,所以就写了个简单的Python来自动抢V9.虽然用的是比较蠢的方法,但觉得还是有 ...
- python用os模块自动打开软件_Python实现自动打开电脑应用的示例代码
由于时间原因,有时候可能会错过某个上网课的时间段.因此想要实现自动定时启动DingDing. 新手一枚,如有不当勿喷望大佬指正. 自动打开DingDing可以由两种方法实现: 通过找出找出软件在电脑中 ...
最新文章
- posix_kill 信号
- java虚拟机规范这本书怎么样_JVM规范系列开篇:为什么要读JVM规范?
- Python中的startswith和endswith函数使用实例
- 递归算法介绍及Java应用实战
- Android开发之Java集合类性能分析
- 计算机网络在智能建筑的发展,智能建筑的发展历史和趋势
- 实现List按与一个字符串的相似度和字母顺序排序(适用于模糊查询后的排序)...
- Spark-Serialization序列化的2种方式解释对比使用场景
- React躬行记(8)——样式
- 网络攻击盯上民生领域,应对DDoS和APT攻击,如何有效防御?
- 商洛师范学院计算机老师,我校在首届全国师范生微课大赛中获佳绩
- GDOI2020爆蛋记
- 企业跨境电商平台服务解决方案,跨境电子商务贸易业务框架搭建运维
- guido正式对外发布python版本的年份_Guido van Rossum正式对外发布Python版本的年份是:______。...
- 出书挂名流程 出书挂名步骤
- class com.sun.mail.smtp.SMTPAddressFailedException: 550 5.1.1 recipient is not exist
- 34-电影排行榜上(布局界面)
- 学习笔记 | 百度搜索技巧
- 机器学习必备知识之皮尔森系数实现
- 【转】用天文方法计算二十四节气(上)
热门文章
- linux配置apache服务器项目文档,Apache(Linux)服务器配置文档.doc
- C中的运算符优先级和结合性 *p++
- poj 1426 BFS
- Python内置模块---random
- latex中正文前出现一页空白页,且占正文页数
- 欧姆字符的编码c语言,《编码:隐匿在计算机软硬件背后的语言》读书笔记
- spring整合atomikos实现分布式事务的方法示例_分布式事务一:基于数据库原生分布式事务方案实现...
- 解决自动更新时 系统提示“某些设置由你的系统管理员管理”的方法
- day2 java的数据转换与强制转换
- 21_python基础—单例和 __ new __ 方法