2009-12-18 8 views
2

J'ai écrit un script python qui utilise un sous-processus pour appeler robocopy pour synchroniser les fichiers journaux d'un hôte distant.Robocopy code d'erreur 6 '' Le handle est invalide '

Comme si:

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) 

où source_path est le chemin sur l'hôte distant et local_path est le chemin sur l'hôte local (les deux chemins UNC). Le code s'exécute généralement dans un processus démon et est lancé toutes les quelques heures. Il est également possible d'exécuter ce code directement sur l'invite de commande. Il semble que, parfois, quand il est en cours d'exécution dans un processus démon je reçois une erreur de Robocopy:

Code d'erreur 6: « La poignée est invalide »

Mais quand je lance ceci sur l'invite de commande je reçois aucune erreur . D'après ce que j'ai trouvé dans une recherche sur le web, cela peut être lié à des handles de fichiers qui sont déjà ouverts sur les fichiers en cours de transfert. Quelqu'un at-il plus d'informations sur cette erreur et les moyens de l'éviter?

+0

Je trouve qu'il est recommandé de toujours utiliser des chaînes brutes lorsque vous utilisez des barres obliques inverses dans les chaînes. Dans votre cas, vous échappez à des barres obliques inverses et pas à d'autres. Il ne devrait pas être lié à votre problème, mais en prenant l'habitude signifie que vous ne perdez pas de temps à l'avenir en essayant de comprendre pourquoi "\\\\ server \ nameofshare" ne fonctionne pas ... –

Répondre

1

Les recherches de Google pour "robocopy handle is invalid" suggèrent que vous pourriez trouver le succès en utilisant l'option/b pour "mode de sauvegarde".

Même si cela ne fonctionne pas, je suggérerais d'ajouter du code pour sortir les noms de fichiers lors de leur copie (ou de les enregistrer), et une fois que vous aurez identifié le fichier défaillant, vous réaliserez peut-être le problème est.

+0

Merci! Je vais essayer et vous faire savoir comment ça se passe. – noahd

Questions connexes