おれさまラボ

実際に手を動かして理解を深めるブログ。

コマンドプロンプトを使ってファイルの同期を自動化するPart2

ファイル同期にrobocopyを使い始めたが、どうもうまくいかない事があったのでまとめてみます。

 現在の我が家の環境はこんな感じ。

f:id:naoto408:20150828083518p:plain

 

HPのMicro Serverをファールサーバ(Samba)にして、各クライアントからアクセスできるようにしています。

 

ファイルサーバにはHDD4台が格納されていて、OS用、データ用、バックアップ用、録画用になっています。

 

データ用HDDの内容をバックアップ用HDDにフルバックアップしたいというのが今回の目的です。

今回はUbuntuでシェル等で処理をするのではなく、Windows10の方でbatでバックアップ処理をすることにしました。

 

以前は外付けHDDをPCにつないでxcopyでファイル同期を実現していました。

関連:コマンドプロンプトを使ってファイルの同期を自動化する - フルスタックエンジニアを目指して

 

今回使うrobocopyは「堅牢性の高いファイルコピー」というもの。

詳しいことは以下のリンク先が参考になります。

関連:Tech TIPS:Windowsのrobocopyコマンドでフォルダーをバックアップ/同期させる - @IT

 

batファイルを作成し、うまく同期されることを確認。タイムスケジューラに登録して運用することとしました。

 

しかし、確認してみると翌日ファイル同期がされていない。でも、タイムスケジューラでは実行したログが残っていました。

 

そこで、batのログを確認してみると「指定されたパスがにつかりません」の文字が。

 

調べてみると、どうもタイムスケジューラを使うとネットワークドライブの状態を保持してくれず、タスクスケジューラとして再度ネットワークドライブをマウントしなければならないとわかりました。

関連:robocopyでNAS(ネットワークドライブ)にファイルを同期させる方法 - 東洋黒客は勇者である

 

ということで、batにnet useコマンドを追加。zドライブとしてファイルサーバのHDDををマウントすることに。

関連:管理者必見! ネットワーク・コマンド集 - net useコマンド:ITpro

 

再度タスクスケジューラで動かしてみるとうまくいきました。