windowsのrobocopyコマンドを使い、
サーバー間のファイルコピーを行っています。
処理はローカルサーバー上にバックアップを取った上で、別サーバーにコピーしています。
サーバー起動後は問題なく動くのですが、
何かをきっかけに正常に動作しなくなります。
robocopyのログには「別のプロセスが使用中」とのエラーが出て、
0バイトの空ファイルがコピー(上書き)されてしまいます。
コピー元のサーバー上では対象ファイルを開いたりもしておらず、
ファイル名を変えたり削除もできるので別のプロセスが使用中とは考えられないため、
このバッチ処理の中で別のプロセスがファイルを掴んでしまっているのではないかと考えています。
こちらどうすれば解消できるかご教示いただきたいです。
Windows
1@echo off 2echo ファイルを転送します。 3 4rem アップロードするフォルダ DATADIR 5rem robocopy コピー元 コピー先 /MIRなどのオプション 6 7rem ---------------変数一覧--------------- 8rem バックアップ用フォルダ パラメーター1 9set DEVBACKUP=%1 10rem 対象サイト パラメーター2 11set SITE=%2 12rem 転送するファイルをまとめて以下のフォルダに置く パラメーター3 13set DATADIR=%3 14rem サーバー情報 パラメーター4 15set SERVERINFO=%4 16rem 環境情報 パラメーター5 17set SERVERENV=%5 18rem -------------変数ここまで------------- 19 20if not exist %DEVBACKUP% (mkdir %DEVBACKUP%) 21 22rem previousディレクトリが存在したら削除する。previousディレクトリを新規作成 23if exist %DEVBACKUP%\previous (rmdir /S /Q %DEVBACKUP%\previous) 24mkdir %DEVBACKUP%\previous 25 26rem currentディレクトリが存在したら、currentディレクトリの中身をpreviousディレクトリに移動する 27if exist %DEVBACKUP%\current (robocopy %DEVBACKUP%\current %DEVBACKUP%\previous\ /MIR /R:0 /W:0 /NP /XJD /XJF) 28 29rem currentディレクトリが存在したら削除する。currentディレクトリを新規作成 30if exist %DEVBACKUP%\current (rmdir /S /Q %DEVBACKUP%\current) 31mkdir %DEVBACKUP%\current 32 33rem コピー元のフォルダをcurrent直下のフォルダとしてコピーする(日付ディレクトリは作らない) 34robocopy %DATADIR% %DEVBACKUP%\current\ /MIR /R:0 /W:0 /NP /XJD /XJF 35echo バックアップ作成完了しました 36 37 38echo %SERVERENV%サーバーにファイルをコピーします 39rem 対象サーバーにアップローダーサーバーからファイルを転送する 40for /F "usebackq tokens=1,2,3" %%1 in (%SERVERINFO%) do ( 41 net use %%1\%SITE% /user:%%2 %%3 42 robocopy %DATADIR% %%1\%SITE%\ /COPY:DT /MIR /R:0 /W:0 /NP /XJD /XJF 43)
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

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/22 09:56