Python定期备份指定文件夹数据

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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值