从A目录,同步数据到B目录,文件只同步一次,已同步的忽略。

import os
import time
import shutil
import pickle as p

def check_data_file(data_file):
    if not os.path.exists(data_file):
        os.mknod(data_file)
        data_list = []
        with open(data_file, 'wb') as fobj:
            p.dump(data_list, fobj)

def check_file():
    new_list = []
    with open(DATA_FILE, 'rb') as fobj:
        data_list = p.load(fobj)

    for path, foders, files in os.walk(SRC_DIR):
        for each_file in files:
            file = os.path.join(SRC_DIR, each_file)
            if file not in data_list:
                new_list.append(file)
    with open(DATA_FILE, 'wb') as fobj:
        p.dump(data_list + new_list, fobj)

    return new_list

def cp_file(new_file_list):
    for file in new_file_list:
        shutil.copy(file, DST_DIR)

if __name__ == '__main__':
    SRC_DIR = '/root/%s' % time.strftime('%Y%m%d')
    DST_DIR = '/tmp/%s' % time.strftime('%Y%m%d')
    if not os.path.exists(DST_DIR):
        os.mkdir(DST_DIR)
    DATA_FILE = os.path.join(DST_DIR, 'data_file')
    check_data_file(DATA_FILE)
    new_file_list = check_file()
    cp_file(new_file_list)

场景:从A目录,同步数据到B目录,文件只同步一次,已同步的忽略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值