<< オープンソースはソフトウェアのライセンス料がかからないから「安い」。それは本当? | main | 全席優先席って良くないよね >>

スポンサーサイト

一定期間更新がないため広告を表示しています

スポンサードリンク * - * * - * - * web拍手WEB拍手!

robocopyの /MIR と /MOVE の指定は危険

よくよく考えてみれば、ごく当たり前の話ではある。

壊れかけのハードディスク

ハードディスクがアクセス中にシステムがハングアップする現象が起こるようになったので、それのバックアップをしていた。もともとパーティション丸ごとコピーするつもりだったのだけど、その処理もハングアップする。

robocopy /MIR/ /MOVE を実行中に OS がハングアップ

仕方なく、robocopyを使ったのだが、コピー完了後にファイルを消しても良いだろうと何となく /MOVE を指定した。
→ そして、robocopy中にシステムがハングアップ。ハードリセットをする羽目になる。

もう一度、同じrobodopyのバッチファイルを実行したら、ハングアップ前にコピーしたファイルたちが /MIR オプションにより Extra file(ゴミファイル)として扱われ、消されてしまった。

対策

結局のところ、/MIR と /MOVE の組み合わせの場合、robocopyがすべてのミラーリング処理が終わった後で、コピー元からファイルを削除するのがあるべき姿のように思える。というのも、/MIRはフォルダ全体のコピーセッションに関わるものだし。システムがクラッシュした後の再実行まで考えると、全ミラーリング完了が一つのトランザクションで、それ以前にファイル削除はダメなんだ。

という訳で、robocopy中のシステムハングアップを考慮して、次の2つの操作に分けることにする。/MOVEは処理の再開と相性が悪いので使わない。

  1. robocopy /MIR /Z 〜他のオプションは省略〜
  2. 1)の処理がハングアップしたら、1)を再実行
  3. 1),2)がすべて成功したら、コピー元ファイルを削除
Kai * 科学技術・数学・コンピュータ * 12:55 * comments(0) * trackbacks(0) * web拍手WEB拍手!

スポンサーサイト

スポンサードリンク * - * 12:55 * - * - * web拍手WEB拍手!

コメント

コメントする









トラックバック

このページの先頭へ