使用python备份文件
想写个定时备份文件的功能,这个功能需要实现:
1.搜索指定的目录里是否存在当天的文件
2.如果存在压缩并加密文件
3.通过ftp上传到备份服务器
4.在备份服务器上定时将文件拷贝到移动硬盘并定时清理文件
1.搜索指定目录
import glob
import os
import shutil class FileHelper:
def __init__(self, searchdir, searchstr):
self.dir = searchdir
self.searchstr = searchstr def get_sourcefile(self):
sourcepath = ("{searchdir}\*{searchstr}*".format(searchdir=self.dir, searchstr=self.searchstr))
return glob.glob(sourcepath) @staticmethod
def get_destfile(sourcefile, destdir):
tail = os.path.split(sourcefile)[1]
return os.path.join(destdir, tail[:tail.rfind('.')] + '.zip') @staticmethod
def get_shortfilename(sourcefile, destdir):
tail = os.path.split(sourcefile)[1]
return os.path.join(destdir, tail) @staticmethod
def copyfile(sourcefilename, destfilename):
shutil.copyfile(sourcefilename, destfilename) @staticmethod
def deletefile(filename):
os.remove(filename)
2.压缩文件
本来想通过Python自带的zipfile类来实现的,如下代码所示。
import zipfile class Zip(object): def __init__(self, sourcefilename, destfilename, password):
self.sourcefilename = sourcefilename
self.destfilename = destfilename
self.password = password def zip(self):
azip = zipfile.ZipFile(self.destfilename, 'w')
azip.setpassword(self.password.encode('utf-8'))
azip.write(self.sourcefilename)
结果生成的压缩文件,不用密码都可以打开,查了Python的文档才知道zipFile.
setpassword
(pwd)
Set pwd as default password to extract encrypted files.
这个密码是用来解压文件时候用的,至于压缩文件的时候怎么设置密码,就不知道了。。。
所以退而求其次,用7zip的命令行方式了
import os class Zip(object): def __init__(self, sourcepath, destpath, password):
self.sourcepath = sourcepath
self.destpath = destpath
self.password = password def zipfile(self):
pipe = os.popen("7z a -tzip {destpath} -p{password} {sourcepath}".format(destpath=self.destpath,
password=self.password,
sourcepath=self.sourcepath))
pipe.read()
pipe.close()
3.上传FTP
import ftplib class FileUpaloder: def __init__(self, host, username, password, localfile, remotefile):
self.host = host
self.username = username
self.password = password
self.localfile = localfile
self.remotefile = remotefile def upload(self):
f = ftplib.FTP(self.host)
f.login(self.username, self.password)
bufsize = 1024
fp = open(self.localfile, 'rb')
f.storbinary('STOR ' + self.remotefile, fp, bufsize)
fp.close()
f.quit()
4.备份并定时清理文件
from filehelper import *
import datetime sourcepath = "C:\\source"
destpath = "C:\\source\\backup"
searchstr = "aa" FileHelper = FileHelper(sourcepath, searchstr)
sourcefilelist = FileHelper.get_sourcefile() # 备份文件
for filename in sourcefilelist:
destfilename = FileHelper.get_destfile(filename, destpath)
datestr = datetime.date.today().strftime("%Y_%m_%d")
if filename in datestr:
FileHelper.copyfile(filename, destfilename) # 删除文件
for filename in sourcefilelist:
datestr = filename[13:23]
filedate = datetime.datetime.strptime(datestr, "%Y_%m_%d")
checkDate = datetime.date.today() - datetime.timedelta(days=10)
if filedate <= checkDate:
FileHelper.deletefile(filename)
使用python备份文件的更多相关文章
- python 备份文件脚本
使用python备份服务器的文件 #coding=utf- import os import os.path def copyFiles(sourceDir, targetDir): for file ...
- python简要
python用冒号代替{}开启语句块 /usr/bin/python 加在脚本的头部, ./脚本 help("str") : 查看命令帮助 '''三引号可以打印换行字符串 prin ...
- python第四篇:linux命令行总结 + 自动备份Python程序
由于最近需要学习Python爬虫相关的知识,所以就先从Python基础.Linux基础开始进行了学习,下面主要是总结了常见的Linux的命令行.最后为了巩固学到的东西,尝试写了个自动备份的Python ...
- Python 实例: 备份文件
都说生命苦短,我用python, 所以这两天我也开始学python了. 昨天搞了下语法,今天搞出来个实例,备份文件.尽管编码相当烂,但是测试了一下,还真能用. 它读取一个任务文件, 根据指定的任务参数 ...
- 利用Python爆破数据库备份文件
某次测试过程中,发现PHP备份功能代码如下: // 根据时间生成备份文件名 $file_name = 'D' . date('Ymd') . 'T' . date('His'); $sql_file_ ...
- python小程序:备份文件
设计程序,有以下步骤: 需要备份的文件和目录由一个列表指定. 备份应该保存在主备份目录中. 文件备份成一个zip文件. zip存档的名称是当前的日期和时间. 解决方案: 版本一: #!/usr/bin ...
- 备份文件的python脚本(转)
作用:将目录备份到其他路径.实际效果:假设给定目录"/media/data/programmer/project/python" ,备份路径"/home/diegoyun ...
- 配置百度云盘python客户端bypy上传备份文件
要求:安装python2.7,安装git 1.git clone https://github.com/houtianze/bypy.git 2.cd bypy 3.sudo python setup ...
- python 项目实战之备份文件夹并且压缩文件夹及下面的文件
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/11/12 14:21 # @Author : zoulixiang # @S ...
随机推荐
- 剑指offer 4.树 重建二叉树
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7, ...
- mvc项目远程发布到windows server服务器
1.安装IIS的时候需要将这两个选项勾选起来 2.确保 管理服务委派 这个选项存在 3.添加委派规则 4.配置IIS管理用户,后续需要用这个用户进行发布连接 5.配置站点的IIS权限 选择刚才在前面设 ...
- Oracle查看表空间
知道表空间名,显示该表空间包括的所有表. select * from all_tables where tablespace_name='表空间名' 知道表名,查看该表属于那个表空间 select t ...
- 微软AD相关操作的免费工具
https://www.ittsystems.com/best-free-active-directory-tools/
- SMTP 协议
SMTP 响应状态码 代码 说明 说明 211 System status, or system help reply 系统状态或显示系统帮助. 214 Help message 显示系统帮助,通常用 ...
- ubuntu16.04 HyperLedger Fabric 1.2.0 开发环境搭建
安装准备 1. 安装git.cRUL.gcc/g++和make $ sudo apt-get update $ sudo apt-get install build-essential git cur ...
- nginx1.14.0版本高可用——keepalived双机热备
nginx不支持主从,所以我们需要使用keepalive支持高可用. keepalived重要知识点 在局域网内,每个主机上各安装一个keepalived,注意关闭防火墙firewalld,然后设定一 ...
- scrapy实战之scrapyrt的使用
scrapyrt为scrapy提供了一个http接口,有了它,我们不用再执行命令,而是直接请求一个http接口来启动项目,如果项目是部署在远程的,会比较方便. 1.安装: pip install sc ...
- mysql之工具的使用总结(mac版本)
13.mysql Mac终端操作 12.MySql在Mac上的安装与配置详解: 11.mac下安装mysql5.7.18,连接出现Access denied for user 'root'@'loca ...
- java 读取外部和source下配置文件
import java.io.File; import java.io.FileInputStream; import java.net.URL; import java.util.Map; impo ...