Я написал скрипт на python, который использует подпроцесс для вызова robocopy для синхронизации файлов журналов с удаленного хоста.
Вроде так:
program = 'Robocopy'
options = ['/S']
args.append(program)
args.append(options)
args.append('\\\\%s\%s' % (hostname, source_path))
args.append(local_path)
proc = subprocess.Popen(args=args, shell=True, stdout=cmd_log, stderr=error_log)
где source_path - это путь на удаленном хосте, а local_path - это путь на локальном хосте (оба пути UNC).
Код обычно выполняется в процессе демона и запускается каждые несколько часов. Также возможно запустить этот код непосредственно в командной строке. Кажется, что иногда, когда он выполняется в процессе демона, я получаю сообщение об ошибке из Robocopy:
Код ошибки 6: «Неверный дескриптор»
Но когда я запускаю это в командной строке, я не получаю ошибок. Из того, что я нашел в веб-поиске, это может быть связано с дескрипторами файлов, которые уже открыты в передаваемых файлах. У кого-нибудь есть больше информации об этой ошибке и способах ее избежать?