|

楼主 |
发表于 2023-3-2 10:59:44
|
显示全部楼层
我刚刚做了个测试,以下这样子是可以
shutil.copy(f'{src}\{file}', dst)
src = '\\\\?\\E:.......
file = ‘ ’
dst = '\\\\?\\Z:........
shutil.copy(f'{src}\{file}', dst)
但是放在以下程序中就不行:
# -*- coding:utf-8 -*-
import os
import shutil
import time
# 文件备份函数
def copy_data(file, src, dst):
shutil.copy(f'\\\\?\\{src}\{file}', dst) # 这里添加后,我单独测试是可以的,
# print(f'完成数据备份:{src}\{file}')
# 文件夹备份函数
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)
# print('完成备份')
time.sleep(int(threshold) * 60)
|
|