プチIT化

【超初心者向け】フォルダ同期をrobocopyコマンドでやってみる

こんにちは、わたあめです。フォルダのバックアップなど、フォルダの内容を同期させたいというシーン、多いのではないでしょうか。手動でやってもいいけど、やっぱり自動が便利!そんな時に使うのが「robocopy」コマンドです。

わたあめ
わたあめ
って、私も最近知ったのですが!(笑)

robocopy?コマンド?何それ?という方に向けて、私自身もrobocopy初めて使うので、一緒にやってみましょう!

コマンドの実行等は自己責任でお願いいたします。

前提知識

コマンドとは

この記事ではコマンド=Windowsのコマンドプロンプトで実行する命令文という意味で使っています。命令文とは、普段私たちがマウスで行っている画面操作を文で表したものになります。

例えば、ファイルをコピーする場合…

  • マウス操作だと、【コピーしたいファイル(a.txt)を右クリック>コピー>貼り付けたいフォルダをクリック>右クリック>貼り付け】という操作
  • コマンドだと、【copy コピー元ファイル コピー先ファイル】という文

といった具合です。もちろん、ファイルパスなどの記述方法などありますが、イメージこんな感じ。普段行っている操作をプログラムっぽい文で実行しちゃう、という事です。

コマンドプロンプトの開き方

では、そのコマンドとやらはどうやって実行するのか?コマンドプロンプトという画面にコマンドを打ち込むことで実行できます。コマンドプロンプトの開き方は以下の手順です。

  1. [Windowsボタン]>[すべてのアプリ]>[Windowsシステムツール]>[コマンドプロンプト]をクリック
  2. 黒い画面が開く

この黒い画面こそが、コマンドプロンプトと言われているもので、ここにコマンドを打ち込むことで普段行っている操作(ファイルコピーなど)を行う事が出来るのです。

わたあめ
わたあめ
それでは、本題のrobocopyに行ってみよう!

robocopyコマンドについて

robocopyコマンドは何するコマンドか

robocopyコマンドは、フォルダを同期するコマンドです。例えば、こんなシーンで使えると思います。

  • フォルダの中身を定期的に外付けHDDやファイルサーバに差分をバックアップ取りたい。
  • パソコンを買って、今のパソコンから新しいパソコンに同じごっそりファイルを移したい。

同期とコピー何が違うのか

わたあめ
わたあめ
フォルダに同期する=コピーするのと同じじゃない?

って思った。具体的には、copyコマンドとrobocopyコマンドの違いは何か。copyコマンドは単純なコピー機能ですが、robocopyはコピーの条件(更新日やファイルサイズ、ファイル名)を指定したり、ログを記録出来たりします。copyコマンドより機能が多い!

copyの前についている"robo"ですが、"Robust"の略みたいで"強健な"や"たくましい"、"強固な"の意味があるそうです。つまり、コピーしっかりやりますコマンドという事です。機能が充実していて信頼性のあるコピーコマンドなんです。きっと。

基本コマンド:フォルダを同期する

まずは、基本的なコマンドから実行していきましょう。基本コマンドは、以下です。

robocopy 同期元 同期先

これだけではイメージしにくいかもしれないので、以下の例を使って解説します。

  • デスクトップにsample1とsample2フォルダがある。
  • sample1フォルダにはテキストファイル3つ、sample2フォルダは空。
  • sample1フォルダの中をsample2に同期させる。

コピー前の状態です。この状態で以下のコマンドを実行します。

robocopy C:\Users\****\Desktop\sample1 C:\Users\****\Desktop\sample2

※"****"はユーザ名なのでマスキングしています。

コマンドを実行すると、以下のような状況に変化します。同期できました!

フォルダパスの書き方

おさらいになりますが、コマンドは以下でしたね。

robocopy 同期元 同期先

この、同期元・同期先ってどうやって書けばいいのか?についてです。同期元・同期先の部分にはフォルダパスを書きます。フォルダパスはどうやって調べればいいのか、お伝えします。同期元フォルダを開きます。今までの例だと、sample1フォルダですね。

開いたフォルダのアドレスバーをクリックします。アドレスバーとは以下画像の赤枠の所。"sample1"の文字列のすぐ右横をクリックしてみてください。すると、ファイルパスに変わります!ここのパス(文字列)をコピーすればOKです。

同期先も同様にフォルダパスを取得しましょう。

応用コマンド:条件付きコマンド

基本コマンドは理解できたと思うので、次は基本コマンドをアレンジしていきましょう!

冒頭で述べたように、robocopyはいろいろな条件を付けて実行できます。コマンド例を書いていきますね。少しでも参考になれば幸いです。

特定のファイルを同期する

フォルダの中に入っている特定のファイル名、また、画像ファイルだけ同期したい、なんてシーンがあるかもしれません。そんな時は、ファイルを条件指定します。

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”を付けます。

robocopy 同期元 同期先 /MIR

これが差分をバックアップするファイルのコマンドです。例でみていきましょう。

差分をバックアップ

sample1のフォルダの内容をsample2のフォルダに、差分だけコピーします。差分判定ですが、更新日時で判断しています。なので、同じファイル名でも、ファイルが更新されていれば更新日時が変わり、コピー対象となります。

robocopy C:\Users\****\Desktop\sample1 C:\Users\****\Desktop\sample2 /MIR

日付を指定して同期

古すぎるファイルの同期はいらないという事もあるかもしれません。そういう時は、日付を指定して同期させることが出来ます。

robocopy 同期元 同期先 /MAXAGE:YYYYMMDD

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です。簡単で分かりやすいですよね。

さいごに

今回は基本コマンドの使い方と、いくつか使用例をまとめてみました。便利そうなコマンドなので、活用していきたいです!!それでは、また。

flier(フライヤー)