こんにちは、わたあめです。フォルダのバックアップなど、フォルダの内容を同期させたいというシーン、多いのではないでしょうか。手動でやってもいいけど、やっぱり自動が便利!そんな時に使うのが「robocopy」コマンドです。
robocopy?コマンド?何それ?という方に向けて、私自身もrobocopy初めて使うので、一緒にやってみましょう!
前提知識
コマンドとは
この記事ではコマンド=Windowsのコマンドプロンプトで実行する命令文という意味で使っています。命令文とは、普段私たちがマウスで行っている画面操作を文で表したものになります。
例えば、ファイルをコピーする場合…
- マウス操作だと、【コピーしたいファイル(a.txt)を右クリック>コピー>貼り付けたいフォルダをクリック>右クリック>貼り付け】という操作
- コマンドだと、【copy コピー元ファイル コピー先ファイル】という文
といった具合です。もちろん、ファイルパスなどの記述方法などありますが、イメージこんな感じ。普段行っている操作をプログラムっぽい文で実行しちゃう、という事です。
コマンドプロンプトの開き方
では、そのコマンドとやらはどうやって実行するのか?コマンドプロンプトという画面にコマンドを打ち込むことで実行できます。コマンドプロンプトの開き方は以下の手順です。
- [Windowsボタン]>[すべてのアプリ]>[Windowsシステムツール]>[コマンドプロンプト]をクリック
- 黒い画面が開く
この黒い画面こそが、コマンドプロンプトと言われているもので、ここにコマンドを打ち込むことで普段行っている操作(ファイルコピーなど)を行う事が出来るのです。
robocopyコマンドについて
robocopyコマンドは何するコマンドか
robocopyコマンドは、フォルダを同期するコマンドです。例えば、こんなシーンで使えると思います。
- フォルダの中身を定期的に外付けHDDやファイルサーバに差分をバックアップ取りたい。
- パソコンを買って、今のパソコンから新しいパソコンに同じごっそりファイルを移したい。
同期とコピー何が違うのか
って思った。具体的には、copyコマンドとrobocopyコマンドの違いは何か。copyコマンドは単純なコピー機能ですが、robocopyはコピーの条件(更新日やファイルサイズ、ファイル名)を指定したり、ログを記録出来たりします。copyコマンドより機能が多い!
copyの前についている"robo"ですが、"Robust"の略みたいで"強健な"や"たくましい"、"強固な"の意味があるそうです。つまり、コピーしっかりやりますコマンドという事です。機能が充実していて信頼性のあるコピーコマンドなんです。きっと。
基本コマンド:フォルダを同期する
まずは、基本的なコマンドから実行していきましょう。基本コマンドは、以下です。
これだけではイメージしにくいかもしれないので、以下の例を使って解説します。
- デスクトップにsample1とsample2フォルダがある。
- sample1フォルダにはテキストファイル3つ、sample2フォルダは空。
- sample1フォルダの中をsample2に同期させる。
コピー前の状態です。この状態で以下のコマンドを実行します。
robocopy C:\Users\****\Desktop\sample1 C:\Users\****\Desktop\sample2
※"****"はユーザ名なのでマスキングしています。
コマンドを実行すると、以下のような状況に変化します。同期できました!
フォルダパスの書き方
おさらいになりますが、コマンドは以下でしたね。
この、同期元・同期先ってどうやって書けばいいのか?についてです。同期元・同期先の部分にはフォルダパスを書きます。フォルダパスはどうやって調べればいいのか、お伝えします。同期元フォルダを開きます。今までの例だと、sample1フォルダですね。
開いたフォルダのアドレスバーをクリックします。アドレスバーとは以下画像の赤枠の所。"sample1"の文字列のすぐ右横をクリックしてみてください。すると、ファイルパスに変わります!ここのパス(文字列)をコピーすればOKです。
同期先も同様にフォルダパスを取得しましょう。
応用コマンド:条件付きコマンド
基本コマンドは理解できたと思うので、次は基本コマンドをアレンジしていきましょう!
冒頭で述べたように、robocopyはいろいろな条件を付けて実行できます。コマンド例を書いていきますね。少しでも参考になれば幸いです。
特定のファイルを同期する
フォルダの中に入っている特定のファイル名、また、画像ファイルだけ同期したい、なんてシーンがあるかもしれません。そんな時は、ファイルを条件指定します。
これが、ファイルを指定する場合のコマンド。例でみていきましょう!
特定のファイル名を同期
sample1に入っているa.txtファイルのみを、smaple2フォルダに同期するコマンド例です。
robocopy C:\Users\****\Desktop\sample1 C:\Users\****\Desktop\sample2 a.txt
特定のファイル種類を同期
特定のファイルの種類のみを同期したい場合の例です。ワイルドカード"*"(=なんでもOKの意味)とファイル拡張子を指定します。
robocopy C:\Users\****\Desktop\sample1 C:\Users\****\Desktop\sample2 *.png
上記コマンドでは、画像ファイル(png)のみ同期するというコマンドになります。
ファイル種類を複数指定して同期
画像の種類っていくつかあると思います。"png"の他にも写真でよく使われる"jpg"だったり。画像形式をいくつか指定して同期したい!という場合には以下のように指定します。
robocopy C:\Users\****\Desktop\sample1 C:\Users\****\Desktop\sample2 *.png *.jpg
ファイル名とファイル名の間に半角スペース入れればOKのようです。上記コマンドでは”png”、”jpg”ファイルをsample2フォルダに同期しています。
バックアップ、差分コピー
バックアップを取るときには、差分だけコピーしていきたいですよね。そんな時はコマンドに”/MIR”を付けます。
これが差分をバックアップするファイルのコマンドです。例でみていきましょう。
差分をバックアップ
sample1のフォルダの内容をsample2のフォルダに、差分だけコピーします。差分判定ですが、更新日時で判断しています。なので、同じファイル名でも、ファイルが更新されていれば更新日時が変わり、コピー対象となります。
robocopy C:\Users\****\Desktop\sample1 C:\Users\****\Desktop\sample2 /MIR
日付を指定して同期
古すぎるファイルの同期はいらないという事もあるかもしれません。そういう時は、日付を指定して同期させることが出来ます。
YYYYは年、MMは月、DDは日を意味しています。
ある日以降のファイルのみ同期する
2020年9月以降のファイルのみ同期対象にするコマンド例です。
robocopy C:\Users\Midori\Desktop\sample1 C:\Users\Midori\Desktop\sample2 /MAXAGE:20200901
時間指定もできれば嬉しいのですが、日付までで時間は指定できないようです。
〇日前のファイルのみ同期する
更新日付が30日前までのファイルのみ同期対象にするコマンド例です。
robocopy C:\Users\****\Desktop\sample1 C:\Users\****\Desktop\sample2 /MAXAGE:30
このように日付指定していたところを、30の数字に変更すればOKです。簡単で分かりやすいですよね。
さいごに
今回は基本コマンドの使い方と、いくつか使用例をまとめてみました。便利そうなコマンドなので、活用していきたいです!!それでは、また。