ラージビッグバナー(970x90)

Windows

【Robocopy】ドライブを指定せずにドライブをまるごとバックアップする!フォルダ除外も可能!

更新日:

ビッグバナー(piglog)728px

改めてタイトルをみるとなんのこっちゃという感じですね。

下で説明しますが、備忘録がてらスクリプトを作成したのでメモしておきます。ファイルサーバのデータ移行のときに使い回せるといいなぁ。

 

ドライブを指定するとどうなるのか

例えば、Dドライブのデータをすべて別のドライブやバックアップサーバにコピーを取得したい、などといったときに、コピー元に D:\ などと指定すると隠し属性が付与されてしまい、バックアップ先で表示されないときがあります。

そんなこんないろいろ面倒ごとを回避するため、ドライブ直下のフォルダを指定してrobocopyコマンドを指定した方が都合がいい。(ときがあったような気がする。。。弱気)

 

ドライブを指定してまるごとバックアップする

まずは、コピー元にドライブを指定する場合の書き方です。(あまりやりたくない方法)。

あと、コマンドプロンプトではなく、PowerShellで書いています。変数の指定などがコマンドプロンプトより書きやすいので。

 

ドライブを指定しないでまるごとバックアップする

やり方としては、

  1. コピー元のドライブ配下のフォルダ一覧を取得
  2. バックアップ元と先を指定
  3. Foreach でまわす

という方法です。

 

除外したいフォルダがある場合

ドライブ直下のフォルダでバックアップ対象から外したい(除外したい)フォルダがある場合は、一覧を取得するときに除外します。

↑の方法だと、robocopy コマンドの除外オプションでは対応できないです(取得したフォルダ名をFromとToに指定するため)

例えば、D:\notBK01 というフォルダを除外したい場合は、変数「$get_dirs」を以下に差し替えます。

 

除外したいフォルダが複数ある場合は、Where-Object で以下のように書けます。
D:\notBK01 フォルダと D:\notBK02 フォルダを除外します。

 

まとめ

記事を書いていてまわりくどいやり方をしているような気がしますが、使い回せると考えれば・・・。半分自己満足なので良しとしましょう。

使用する場合は自己責任にてお願いいたします!m_ _m

以上です。

↓↓↓ Powershell のおすすめレシピ ~結局はオライリー~

レクタングル (大)

レクタングル (大)

リンクユニット(レスポンシブ)

-Windows
-, ,

Copyright© ぴぐろぐ , 2018 All Rights Reserved.