Цель, которую преследую, независимое друг от друга синхронизирование папок. Не нашел никаких других способов, кроме как разделить на потоки. Текущий вариант:
# -*- 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 без потоков все синхронизируется правильно. В логе ничего, кроме сообщений о кол-ве проверенных папок нет. Подскажите, где ошибся. И правильно ли вообще здесь использовать разделение на потоки для независимой синхронизации несколькоих папок?