Уведомления

Группа в Telegram: @pythonsu

#1 Июль 29, 2018 13:25:55

Vimdo
Зарегистрирован: 2018-04-15
Сообщения: 2
Репутация: +  0  -
Профиль  

Применение dirsync с потоками

Всем привет.
Цель, которую преследую, независимое друг от друга синхронизирование папок. Не нашел никаких других способов, кроме как разделить на потоки. Текущий вариант:

 # -*- coding: utf-8 -*-
import os
import dirsync
import threading
from time import strftime
def checkConfig(config_path):
    if os.path.isfile(config_path):
        return True
    return False
def backuper(src, trgt, freq):
    while True:
        cur_time = strftime('%Y-%m-%d-[%H:%M]')
        print('From: {}\nTo:   {}\nFreq: {}{}'.format(src, trgt, freq, cur_time))
        dirsync.sync(src, trgt, 'sync', purge=True, create=True)
        time.sleep(int(freq))
def main():
    config_path = os.path.join(os.environ['USERPROFILE'], 'Documents', 'config', 'backuper', 'config')
    print('Config file: {}\n'.format(config_path))
    if checkConfig(config_path):
        with open(config_path, 'r', encoding='utf-8') as config:
            for line in config.readlines():
                src, trgt, freq = line.split(' | ')
                thread = threading.Thread(target=backuper, args=(src, trgt, freq))
                thread.start()
               
if __name__ == '__main__':
    main()

Проблема в том, что в таком варианте по какой-то причине синхронизируются не все файлы в папках. Часть файлов не попадает в trgt. Условно говоря, каталог-источник имеет внутри 10 подкаталогов. Синхронизируются 6-7. При этом все каталоги и файлы доступны, и при копировании вручную или при использовании dirsync без потоков все синхронизируется правильно. В логе ничего, кроме сообщений о кол-ве проверенных папок нет. Подскажите, где ошибся. И правильно ли вообще здесь использовать разделение на потоки для независимой синхронизации несколькоих папок?

Отредактировано Vimdo (Июль 29, 2018 13:26:35)

Офлайн

#2 Июль 31, 2018 20:57:16

DamMercul
Зарегистрирован: 2017-11-26
Сообщения: 325
Репутация: +  13  -
Профиль   Отправить e-mail  

Применение dirsync с потоками

Попробуй рекурсивно получить все файлы и названия папок из одной папки в другую и перезаписать их, зачем dirsync..



____________________________________________________

 # Life loop
while alive:
    if (fun > boredom) and money:
        pass_day(fun, boredom, money)
        continue
    else: break

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version