ファイル同期にrobocopyを使い始めたが、どうもうまくいかない事があったのでまとめてみます。
現在の我が家の環境はこんな感じ。
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
再度タスクスケジューラで動かしてみるとうまくいきました。