2

サブプロセスを使用して robocopy を呼び出し、リモート ホストからログ ファイルを同期する Python スクリプトを作成しました。

そのようです:

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:「ハンドルが無効です」

しかし、コマンドプロンプトでこれを実行すると、エラーは発生しません。Web 検索で見つけたものから、これは、転送中のファイルで既に開いているファイル ハンドルに関連している可能性があります。このエラーとそれを回避する方法に関する詳細情報はありますか?

4

1 に答える 1

1

Googleで「robocopyハンドルが無効です」を検索すると、「バックアップモード」の/bオプションを使用して成功する可能性があります。

それが機能しない場合でも、コピー中のファイル名を出力する(またはログに記録する)コードを追加することをお勧めします。特定の障害のあるファイルを特定すると、問題が何であるかを理解できる可能性があります。

于 2009-12-18T21:21:15.087 に答える