質問: windowsのrobocopyコマンドを使い、 サーバー間のファイルコピーを行っています。 処理はローカルサーバー上にバックアップを取った上で、別サーバーにコピーしています。 サーバー起動後は問題なく動くのですが、 何かをきっかけに正常に動作しなくなります。 robocopyのログには「別のプロセスが使用中」とのエラーが出て、 0バイトの空ファイルがコピー(上書き)されてしまいます。 コピー元のサーバー上では対象ファイルを開いたりもしておらず、 ファイル名を変えたり削除もできるので別のプロセスが使用中とは考えられないため、 このバッチ処理の中で別のプロセスがファイルを掴んでしまっているのではないかと考えています。 こちらどうすれば解消できるかご教示いただきたいです。 ``` @echo off echo ファイルを転送します。 rem アップロードするフォルダ DATADIR rem robocopy コピー元 コピー先 /MIRなどのオプション rem ---------------変数一覧--------------- rem バックアップ用フォルダ パラメーター1 set DEVBACKUP=%1 rem 対象サイト パラメーター2 set SITE=%2 rem 転送するファイルをまとめて以下のフォルダに置く パラメーター3 set DATADIR=%3 rem サーバー情報 パラメーター4 set SERVERINFO=%4 rem 環境情報 パラメーター5 set SERVERENV=%5 rem -------------変数ここまで------------- if not exist %DEVBACKUP% (mkdir %DEVBACKUP%) rem previousディレクトリが存在したら削除する。previousディレクトリを新規作成 if exist %DEVBACKUP%\previous (rmdir /S /Q %DEVBACKUP%\previous) mkdir %DEVBACKUP%\previous rem currentディレクトリが存在したら、currentディレクトリの中身をpreviousディレクトリに移動する if exist %DEVBACKUP%\current (robocopy %DEVBACKUP%\current %DEVBACKUP%\previous\ /MIR /R:0 /W:0 /NP /XJD /XJF) rem currentディレクトリが存在したら削除する。currentディレクトリを新規作成 if exist %DEVBACKUP%\current (rmdir /S /Q %DEVBACKUP%\current) mkdir %DEVBACKUP%\current rem コピー元のフォルダをcurrent直下のフォルダとしてコピーする(日付ディレクトリは作らない) robocopy %DATADIR% %DEVBACKUP%\current\ /MIR /R:0 /W:0 /NP /XJD /XJF echo バックアップ作成完了しました echo %SERVERENV%サーバーにファイルをコピーします rem 対象サーバーにアップローダーサーバーからファイルを転送する for /F "usebackq tokens=1,2,3" %%1 in (%SERVERINFO%) do ( net use %%1\%SITE% /user:%%2 %%3 robocopy %DATADIR% %%1\%SITE%\ /COPY:DT /MIR /R:0 /W:0 /NP /XJD /XJF ) ``` robocopyのログは以下の通りです ``` ------------------------------------------------------------------------------- ROBOCOPY :: Windows の堅牢性の高いファイル コピー ------------------------------------------------------------------------------- 開始: 2017年5月22日 13:43:53 コピー元 : D:\xxxxxx\ コピー先 : \\192.168.xx.xxx\D$\yyyyyyy\ ファイル: *.* オプション: *.* /S /E /DCOPY:D /COPY:DT /PURGE /MIR /NP /XJF /XJD /R:0 /W:0 ------------------------------------------------------------------------------ 1 D:\xxxxxx\ 新しい 18 test.txt 2017/05/22 13:43:53 エラー 32 (0x00000020) ファイルをコピーしています D:\xxxxxx\test.txt プロセスはファイルにアクセスできません。別のプロセスが使用中です。 ------------------------------------------------------------------------------ 合計 コピー済み スキップ 不一致 失敗 Extras ディレクトリ: 1 0 0 0 0 0 ファイル: 1 0 0 0 1 0 バイト: 18 0 0 0 18 0 時刻: 0:00:00 0:00:00 0:00:00 0:00:00 終了: 2017年5月22日 13:43:53 ```
回答: 作業されているマシンにセキュリティソフトはインストールされていますか? リアルタイムスキャンが走って掴まれてしまうケースもあると思います 可能であればセキュリティソフトを一度停止して試してみてはいかがでしょうか 的外れでしたら、可能性のひとつを消したということで、、、