为监管需求,需要保留时间非常长的数据库备份。存储代价太大。所以存在了,临时抱佛脚,伪造备份。。

以下脚本功能,在于根据一个备份,复制出一段时间的备份。并且更改备份的文件时间戳。可以用shell轻松写出。Python也方便。在此记录一下,方便有人需要。

由于此次为IO密集型操作。所以并发执行也并无明显加速效果,也就单进程执行。代码实在累赘,别介意。

# -*- coding: utf-8 -*-
# project:  NewPCFirst
# date: 2019/6/6
# phone: 475982055
# author: dba_yix
# function: 制作备份 from datetime import datetime, timedelta import os class Backuper(object): def __init__(self, datelist, filedir, copysourcefile):
self.datelist = datelist
self.filedir = filedir
self.copysource = os.path.join(filedir, copysourcefile) def create(self):
# 拿到需要备份的目录。
for backdir in self.datelist:
# 判断文件夹是否存在
backfile = os.path.join(self.filedir, str(backdir))
backfiledir = backfile.split(" ")[0]
#
if not os.path.exists(backfiledir):
osCommand = "cp -r %s %s" % (self.copysource, backfiledir)
osCommandChangeDirDateTime = "touch -d %s %s" % (backdir, backfiledir)
osCommandChangeFileDateTime = "touch -d %s %s/*" % (backdir, backfiledir)
os.system(osCommand)
os.system(osCommandChangeDirDateTime)
os.system(osCommandChangeFileDateTime) class DateBetweenTwoDate(object): @staticmethod
def returnDateList(start_date, end_date):
start_date = datetime.strptime(start_date, '%Y-%m-%d')
end_date = datetime.strptime(end_date, '%Y-%m-%d') intervaldays = (end_date - start_date).days __dateList = []
i = 0
while i < intervaldays:
import random
randomSecond = random.randint(0, 120)
generalDate = start_date + timedelta(days=i) + timedelta(seconds=randomSecond) __dateList.append(generalDate)
i += 1 return __dateList def main():
# 得到要制作备份的日期。填入两个事件区间。
datelist = DateBetweenTwoDate.returnDateList('2018-08-01', '2019-06-10') backuper = Backuper(datelist, '/backup/databack/WALLET_APP', '2019-06-06')
backuper.create() if __name__ == '__main__':
main()

最新文章

  1. 并行计算提升32K*32K点(32位浮点数) FFT计算速度(4核八线程E3处理器)
  2. UIDynamic - 推动行为: UIPushBehavior
  3. 谈谈javascript放在哪里更合适
  4. win7共享wifi
  5. 获取月份对应的day
  6. android开发图片分辨率问题解决方案
  7. webstrom开发微信小程序说明
  8. 实现一个简单的邮箱地址爬虫(python)
  9. android 数据持久化——I/O操作
  10. cocos2d-html5 简易 下拉表单 控件
  11. jquery mobile小案例
  12. 1.Linux电源管理-休眠与唤醒
  13. Jvm 参数笔记
  14. Cola Cloud 基于 Spring Boot, Spring Cloud 构建微服务架构企业级开发平台
  15. BZOJ1396 识别子串 字符串 SAM 线段树
  16. python框架之Django(7)-Cookie&amp;Session使用
  17. sql server 多表关联更新 update
  18. redis简介(未完成)
  19. bzoj1294
  20. jQuery和CSS3超酷表单美化插件

热门文章

  1. React实现checkbox group多组选项和标签组显示的联动
  2. XF Grid使用-两行两列-跟WPF不同
  3. Bootstrap 媒体对象 列表组
  4. jquery 标签页
  5. WPF——TargetNullValue(如何在绑定空值显示默认字符)
  6. 三种方式配置Mac OS X的启动项
  7. SFC游戏列表(维基百科)
  8. Windows 8各种流之间的转换
  9. Delphi编程中Http协议应用
  10. .NET DataTable转换为JSON格式的字符串