Pergunta

Eu escrevi um script python que usa o subprocesso para chamar Robocopy para sincronizar arquivos de log de um host remoto.

Igual a:

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) 

Onde Source_Path é o caminho no host remoto e o local_Path é o caminho no host local (ambos os caminhos da UNC). O código normalmente é executado em um processo de daemon e é expulso a cada poucas horas. Também é possível executar esse código diretamente no prompt de comando. Parece que, às vezes, quando está em execução em um processo de daemon, recebo um erro do robocopy:

Código de erro 6: 'O identificador é inválido'

Mas quando eu executo isso no prompt de comando, não recebo erros. Pelo que encontrei em uma pesquisa na web, isso pode estar relacionado a alças de arquivo que já estão abertas nos arquivos que estão sendo transferidos. Alguém tem mais informações sobre esse erro e maneiras de evitá -lo?

Foi útil?

Solução

Google pesquisa "Robocopy Handle é inválido" Sugira que você possa encontrar sucesso usando a opção /b para "modo de backup".

Mesmo que isso não funcione, sugiro adicionar código para produzir os nomes de arquivos à medida que eles estão sendo copiados (ou logá -lo) e, depois de identificar o arquivo de falha específico, também pode perceber qual é o problema.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top