admin 管理员组

文章数量: 1184232

Python 定时自动备份文件

简介:

通过generate.bat文件生成外置配置文本文件config.ini,python调用config.ini外置变量参数,从而实现设置定时备份文件的任务。

1. bat脚本部分代码

@echo off
setlogname=\backup.log
echo[Config]> config.ini
echo 输入拷贝的需备份文件夹路径:
set /p  file_folder=folderDir=>>config.ini
echo 输入拷贝的目的文件夹路径: 
echo %file_folder% >>config.ini
set /p  back_folder=folderDir_Backup=>>config.ini
echo %back_folder% >>config.ini
echo 输入备份日志文件夹缓存路径: 
set /p  log_folder=logDir=>>config.ini
echo %log_folder%%logname% >>config.ini
echo 输入计划启动任务的时间:
set /p  schedule_time=time=>>config.ini
echo %schedule_time% >>config.ini
rem 将路径中'\'转换成'//'
setstrFilePath=config.ini
setstrOld=\setstrNew=//
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in(%strFilePath%)do(set"var=%%i"if not !var!.==. (set"var=!var:%strOld%=%strNew%!"echo!var!!>>%strFilePath%.bk
  ))
move /y %strFilePath%.bk %strFilePath% >nul
echo 正在转换生成配置文件config.ini,请稍等...
timeout -t 3>nul
exit

2.cmd窗口填写需要备份的路径以及时间参数

3.config.ini 配置文件自动生成内容

[Config]folderDir= E://a 
folderDir_Backup= E://b 
logDir= E://backup.log 
time=10:16

4.日志文件生成

5.backup.py 相关代码

import sys
import os
import time
import datetime
from datetime import datetime,timedelta
import shutil
import configparser
#读取config.ini文件变量 
config = configparser.ConfigParser()
config.read('config.ini')
fileFolder = config.get('Config','folderDir')
fileNamedir = config.get('Config','folderDir_Backup')
filebak_log = config.get('Config','logDir')#读取时间参数defset_schedule_time(time_str):
    config.set('Config','time', time_str)withopen('config.ini','w')as configfile:
        config.write(configfile)'''
#备份defwork():
    replaced_string = fileNamedir.replace('//','\\')#替换路径中的"//"字符
    fileName =(replaced_string)+r'\Backup_'+ time.strftime('%Y%m%d%H%M')print('----开始备份----')
    shutil.make_archive(fileName,'zip', root_dir=fileFolder)print('----备份完成--->'+ time.strftime('%Y%m%d%H%M')+'.zip')withopen(filebak_log,'a')as filebak:#生成日志
        filebak.write(time.strftime('%Y-%m-%d %H:%M',time.localtime())+':'+'Successfull backup to %s'% fileName+'.zip!\n')#主函数defmain():print('----工具启动----')whileTrue:whileTrue:# 获取当前时间
                   now = datetime.now()
                   current_time =f"{now.hour:02d}:{now.minute:02d}"if current_time == config['Config']['time']:break
        work()
        time.sleep(180)if __name__ =='__main__':
   
    main()#print(list(os.walk(fileNamedir)))

本文标签: 备份文件 编程 定时自动