Python备份数据库并定期删除n天前的备份数据(本地)
2017-06-29 11:26
471 查看
Python备份数据库并定期删除n天前的备份数据(本地)
在Windows下进行数据本地备份:整个备份分为4部分,检查文件路径,备份,获取时间,定期删除。
源目录只有一个是的备份代码:
配置文件,其中存放了日期
在Windows下进行数据本地备份:整个备份分为4部分,检查文件路径,备份,获取时间,定期删除。
调用库
import os import time import zipfile import datetime import configparser
1. 检查文件路径
source = [r'E:\database',r'E:\Atlassian\Application Data\Confluence'] # 源文件路径(r为转义字符,python中Windows的路径需要转义) target_dir = r'E:\confluence' # 备份文件路径 def check_path(self): ''' 检查源文件和备份路径 ''' if not os.path.exists(self.source): print "the source %s is not exsits" % (self.source) return False if not os.path.isdir(self.target_dir): os.makedirs(self.target_dir) # 目标路径不存在时,创建目标路径 return True
2. 备份文件
文件备份的库可以使用zipfile也可以使用shutil,本文使用的是zipfile,将文件压缩成zip文件def back_up(): today = time.strftime('%Y%m%d') # 获取当前日期,调用time库 now = time.strftime('%H%M%S') # 获取当前时间 target = target_dir + os.sep + today + '_' + now + '.zip' # 备份文件名称 zip_command = zipfile.ZipFile(target, 'w') ''' zf = zipfile.ZipFile(zipfilename, "w", zipfile.ZIP_STORED,allowZip64=True) 上面的函数有四个函数: zip文件包含路径的名字,"w"/"r"表示写或者读, zipfile.ZIP_STORED表示存储格式(还可以是zipfile.zlib.DEFLATED表示压缩格式), allowZip64=True这个参数是在处理大文件时使用的,默认为False。 如果没有设置为True而处理大文件时会提示 zip file size require ZIP64 extensions. ''' if check_path: i = 0 while i < 2: # 此处的循环是因为,源路径中有两个路径,两个路径均需要备份,因此使用循环,如果只有单一的路径,取消循环即可 for dirpath, dirnames, filenames in os.walk(source[i]): for filename in filenames: # 多级目录备份 path = os.path.join(dirpath, filename) zip_command.write(path) i += 1 zip_command.close()
源目录只有一个是的备份代码:
if check_path: for dirpath, dirnames, filenames in os.walk(source[i]): for filename in filenames: path = os.path.join(dirpath, filename) zip_command.write(path) zip_command.close()
3.获取时间
def getdate(): # 获取n天前的日期 parser = configparser.ConfigParser() parser.read(r"E:\test\days.conf") # 配置文件路径 n = parser.getint('day', 'days')#读取配置文件内容 today = datetime.date.today() duration = datetime.timedelta(n) beforeday = today - duration #获取n天前的日期 ctime = beforeday.strftime('%Y-%m-%d') #装换已经获得日期的格式 return ctime
配置文件,其中存放了日期
# database source [day] days = 5
4.删除文件
def getfilectime(): time = getdate() list = os.listdir(target_dir ) filelist = [] for i in range(0, len(list)): # 遍历目标目录下的所有文件,并将其放入列表 path = os.path.join(target_dir , list[i]) if os.path.isfile(path): filelist.append(list[i]) for i in range(0, len(filelist)): path = os.path.join(target_dir, filelist[i]) if os.path.isdir(path): continue timestamp = os.path.getctime(path) # 获取文件的创建日期 date = datetime.datetime.fromtimestamp(timestamp) ctime = date.strftime('%Y-%m-%d') # 转换时间格式 print list[i], ' 创建时间是: ', ctime if ctime == time: os.remove(path) # 删除文件 print path
相关文章推荐
- 生产环境Mysql数据库备份脚本,Linux下网站数据定期自动备份与删除脚本,Windows下备份网站目录和数据库
- mysql恢复删除的数据库和自动备份数据
- SQL Server 2005数据库定期备份和删除历史备份记录
- Sql Server自动备份数据库,定期删除备份
- java、Extjs导出数据库里的数据至Excel并下载至本地进行数据备份方法之一——使用servlet
- VPS(网站数据+数据库)自动备份脚本(本地+ftp异地备份)
- linux每天定时备份数据库并删除十天前数据详细步骤
- Oracle impdp 远程导出数据到本地数据库,不生成备份文件
- 报表服务器无法解密用于访问报表服务器数据库中的敏感数据或加密数据的对称密钥。必须还原备份密钥或删除所有加密的内容。
- 数据库自动备份、自动删除;创建任务本地保存文件
- oracle_自动备份用户数据,删除N天前的旧数据(非rman,bat+vbs)
- python对MySQL进行数据的插入、更新和删除之后需要commit,数据库才会真的有数据操作。(待日后更新)
- window下备份数据库到LinuxFTP服务器上并自动删除7天前数据备份文件
- 报表服务器无法解密用于访问报表服务器数据库中的敏感数据或加密数据的对称密钥。必须还原备份密钥或删除所有加密的内容。
- 【转】SQL Server 2005数据库定期备份和删除历史备份记录
- 通过制定SQL计划和系统计划实现]SQL Server 2005数据库定期备份和删除历史备份记录
- SQL Server Reporting Service 报错:报表服务器无法解密用于访问报表服务器数据库中的敏感数据或加密数据的对称密钥,必须还原备份密钥或删除所有加密的内容。
- SQL Server Reporting Service 报错:报表服务器无法解密用于访问报表服务器数据库中的敏感数据或加密数据的对称密钥,必须还原备份密钥或删除所有加密的内容。
- php+sql创建本地项目详细步骤3——查看与删除数据库数据
- 操作系统命令误删除数据库的数据文件并数据库没有备份的恢复