1. 数据备份逻辑
2. 代码实现
import os
import shutil
import time
# 文件备份函数
def copy_data(file, src, dst):
shutil.copy(f'{src}/{file}', dst)
# 文件夹备份函数
def new_fold(file, src, dst):
os.mkdir(f'{dst}/{file}')
backup(src=f'{src}/{file}', dst=f'{dst}/{file}')
# 已备份文件夹子节点检查函数
def exist_fold(file, src, dst):
src = f'{src}/{file}'
dst = f'{dst}/{file}'
src_file_name2 = os.listdir(src)
for file2 in src_file_name2:
if os.path.isdir(f'{src}/{file2}'):
if not os.path.exists(f'{dst}/{file2}'):
new_fold(file=file2, src=src, dst=dst)
else:
exist_fold(file=file2, src=src, dst=dst)
else:
if not os.path.exists(f'{dst}/{file2}'):
copy_data(file=file2, src=src, dst=dst)
# 备份路径文件/文件夹差异比对函数
def backup(src, dst):
"""
:param src: 原始路径
:param dst: 备份路径
"""
# 获取需备份文件夹中所有文件和文件夹
src_file_name = os.listdir(src)
for file in src_file_name:
if os.path.isdir(f'{src}/{file}'):
if not os.path.exists(f'{dst}/{file}'):
new_fold(file=file, src=src, dst=dst)
else:
exist_fold(file=file, src=src, dst=dst)
else:
if not os.path.exists(f'{dst}/{file}'):
copy_data(file=file, src=src, dst=dst)
# 调用主函数
if __name__ == '__main__':
src = input(r'请输入原始数据路径(eg.C:\backup):')
dst = input(r'请输入备份数据路径(eg.C:\backup):')
threshold = input('请输入备份时间间隔(min):')
i = 0
while True:
i += 1
print(f'===============正在进行第{i}次备份===============')
backup(src=src, dst=dst)
time.sleep(int(threshold) * 60)