一、简介:
1.实现本地定时备份,备份文件夹产生按照时间排序的迭代文件夹;
2.第一次备份将源文件夹内所有文件备份至备份文件夹,后面只备份发生内容变更的文件;
3.不具备子文件夹备份功能,只备份文件;
4.word的临时文件可以备份,但不保证所有程序都给予临时文件的读权力,因此做了无法读取跳过的设计,所以未保存及关闭的文件可能无法备份;
5.进程内存的实时显示;
6.使用了多线程(伪);
7.因无全面的测试,建议只备份文档、图片等不复杂的文件;
8.有一实时删除备份文件夹内空文件夹的线程,但做了保守设置,结束时可能会对最后1-2个空文件夹进行留存;
9.有文件夹复制时进度条;
10.有倒计时进度条;
11.保守设计,定时全部为0也有1s延时;
12.有完整log;
13.半透明界面。
界面:
log:
二、部分源码:
1.轮子……:
import os,signal,psutil#读取文件夹等 杀死进程 内存占用
import shutil#复制文件
import datetime
import time
import hashlib#哈希验证
from tkinter import *#UI需要
import threading#多线程
from tkinter import filedialog#选择路径需要
import tkinter.font as tkFont#字体设置
import tkinter.ttk#进度条需要
2.多线程、死循环跳出及杀进程退出:
#多线程
t1 = threading.Thread(target=lambda:[first()],daemon=True)#守护线程daemon=True 线程1
t2 = threading.Thread(target=lambda:[stop()],daemon=True) #守护线程daemon=True 线程2
t3 = threading.Thread(target=lambda:[clear()],daemon=True)#守护线程daemon=True 线程3
def t1st():
t1.start()
def t3st():
t3.start()
def t2st():
t2.start()
def stop():
varF_0.set('9')#设置变量为9
time.sleep(1)#等待1s
os.kill(os.getpid(), signal.SIGINT)#杀死进程
.............................
while 1 == 1:
if varF_0.get()== '1':
progressbarthree['maximum'] = time1-1 # 进度值最大值
progressbarthree['value'] = time1-1 # 进度值初始值
for p in range(int(time1)):
time.sleep(1)
progressbarthree['value'] -= 1 # 进度条-1
window.update()
second(dictA, dst_dir, src_dir, dirs_1)
else:
time.sleep(1)
break