Найти - Пользователи
Полная версия: Применение dirsync с потоками
Начало » Python для новичков » Применение dirsync с потоками
1
Vimdo
Всем привет.
Цель, которую преследую, независимое друг от друга синхронизирование папок. Не нашел никаких других способов, кроме как разделить на потоки. Текущий вариант:
 # -*- 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 без потоков все синхронизируется правильно. В логе ничего, кроме сообщений о кол-ве проверенных папок нет. Подскажите, где ошибся. И правильно ли вообще здесь использовать разделение на потоки для независимой синхронизации несколькоих папок?
DamMercul
Попробуй рекурсивно получить все файлы и названия папок из одной папки в другую и перезаписать их, зачем dirsync..
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB