2022年8月31日 robocopyを試してみた!(実践編) 検索する Popular tags 生成AI(Generative AI) Looker Studio BigQuery AlloyDB Google Workspace 事例紹介 Cloud SQL Category インフラ Author 横T SHARE Content はじめに みなさんこんにちは、横Tです! 前回「robocopyを試してみた!(基本編)」の記事を書きました。今回はその続きとなる「実践編」です! 実践編では「すべてのデータをコピー」する場合と「定期的にバックアップ(コピー)」する場合の観点で、詳しく見ていきたいと思います!それではさっそく本編に入りましょう! すべてのデータをコピーする準備 そもそもすべてのデータをコピーするときってどんな時があるでしょうか? また、すべての”データ”というのはどういう意味でしょうか? まず、すべてのデータをコピーしたい場合としては ①パソコンを入れ替える場合 ②ファイルサーバを入れ替える場合 ※情報システム部門の人たちなど の2つがよくあるのではないかなと思います。 ①の場合は、1台のパソコンになるので数十GBほどであれば、1日かけて手動でコピペするのもいいかと思いますが、数百GBとなる場合にはrobocopyを使用するのもいいかもしれません。 ②の場合は、何人もの人と共有して使用することになるので、容量は場合によっては数TB~数十TBとなり、コピペはもはや現実的ではありません。 私も実際にお仕事で数十TBのデータ移行にrobocopyを使用したこともあります。 次に、すべての”データ“ですが、ファイルがそこに存在さえしていればすべてコピーできていると言っていいのでしょうか? 百閒は一見に如かずということで、実際に見てみましょう! 適当なファイルを右クリックしてプロパティを選択します。 表示されたプロパティ画面の”セキュリティ”タブを開きます。 見たことがない人はなんのことかわからないと思いますので簡単に説明すると、 赤枠が、このファイルに対して何かしら権限が設定されているユーザ/グループ、 青枠が、それぞれに設定されている権限です。 一言でいうと、「誰がアクセスできて、どんな操作ができるかを設定している」情報です。(画像は”Users”に対して設定されている権限) このデータ(情報)もコピーしなくてはならないため、ファイルがあるだけではすべてコピーできているとは言えないのです! 他にはファイルの属性やタイムスタンプなども”データ“に含まれてきます。 すべてのデータをコピーする 何をコピーしなくてはならないか確認できたところで、実際にコピーに使うコマンドを見ていきましょう。 実行コマンド robocopy <コピー元> <コピー先> /COPYALL /MIR /EFSRAW /ZB /NP /V /R:1 /W:1 /IT /LOG+:<保存先> たくさんオプションを付けていますが、1つ1つ説明していきます。 ・/COPYALL 「すべてのデータをコピーする」という条件おいては一番重要になってくるオプションになるかと思います。 「/COPY:DATSOU」と同等のコマンドとなり、単純なデータだけでなく付随するデータもコピー対象としてコピーしてくれます。この「DATSOU」の意味は以下のようになっています。 D=データ、A=属性、T=タイムスタンプ、S=セキュリティ、O=所有者情報、U=監査情報 ・/MIR ディレクトリツリーをミラー化してくれるオプション。ミラー化というのは、例えばコピー元で新しく作成されたファイルをコピーするだけではなく、 削除されたファイルがあればコピー先でも同様に削除し、コピー元とコピー先を同じ状態にしてくれます。 なお、/MIRは「/E」と「/PURGE」を合わせたオプションとなっています。 「/E」・・・空のディレクトリを含むサブディレクトリもコピーする 「/PURGE」・・・既にコピー元に存在しないコピー先のファイル/ディレクトリを削除する ・/EFSRAW WindowsのEFSという暗号化機能を使って暗号化しているファイルがある場合にはESF RAWモードという形でコピーしてくれます。 本来、暗号化されているファイルには他の人がアクセスできないようになっていたりするので、このオプションを付けることで コピーできるようにします。 ・/ZB 元々「/Z」「/B」というオプションがあり、それを1つにまとめたオプションです。 「/Z」では再起動可能モードでファイルをコピーするようにし、「/B」ではバックアップモードでファイルをコピーするようにします。 この再起動可能モードというのは、もし何かしらの原因で中断した場合でも途中から再開してくれるようになるので 大きなファイルや大量のデータがある場合には付けておくといいですね。 バックアップモードというのは、簡単に言うとアクセス権が無いファイルでもコピーできるようにします。こちらもすべてをコピーする場合には必須と言っていいですね。 ・/NP コピーの完了率を非表示にします。「逆にあった方がいいのでは?」と思われるかもしれませんが「/LOG:」オプションを付ける際には必須です! 付け忘れるとただひたすら進捗率(0%とか)がたくさん記載されたログとなってしまうのでとても見れるようなログにはなりません。。 コマンドプロンプト上で結果を出力して確認する、という場合はなくても問題はありません。 ・/V すでにコピー先に同様のファイルがある場合はスキップ処理を行いますが、スキップされたファイルがわかるように 出力できるようにします。もしこのオプションが無かった場合にはスキップされたファイルはログ上に残らず、スキップされたファイルのカウント数のみが最後に残りますが、後でログを見直す際にはあった方が分かりやすくなります。 ・/R:1 何かしらの原因でコピーできなかった際の試行回数を指定しています。「別に失敗したらそれはそれでいいよ」という人でもこのオプションは付けてください。 実はこのオプション、robocopy実行時にはデフォルトで設定されており、その設定値は脅威の1000000回! そのためこのオプションはrobocopyを使用する際は必須で指定しておくのがいいでしょう。 今回は試行回数として「1」を指定していますが、状況や条件によって回数は変更してください。 ・/W:1 こちらは再試行と再試行の間に待機する時間を指定します。単位は「秒」です。 これも「/R」と同様にデフォルトで設定されている値があり、 30秒がデフォルト値となっています。 勘のいい人はお気付きかもしれませんが、もし「/R」と「/W」を指定せずデフォルトのまま実行して、1ファイルでもアクセス拒否等で失敗した場合は 1000000回×30秒=30000000秒(約347日) という時間をかけて試行を行い、次のファイルコピーに移ることになります。 1ファイルに1年近くの時間をかけるわけにはいかないのでこれらのオプションは要件に関わらず必須と言えるでしょう。 ・/IT 異常なファイルも含めるようになります。と、ヘルプには記載されているのですが、そもそも異常なファイルというのは ファイルが破損している等のことを指しているわけではありません。 robocopyはファイルの更新日時とサイズを見て差分判定を行いますが、ファイル属性のみを変更した場合でも コピー対象としてくれるようになります。その際「マイナー変更した」という ステータスでログされます。ログ上ではマイナスな表現になっていますがエラーではないですよー。 かなり文字の量が多くなってしましましたが、以上が今回使用するオプションの説明でした。一通り説明をしたオプションを付けて実行することで、基本的にはすべてのデータをコピーすることができるかと思います! ただし、エラーとなりコピーできていないファイルがある場合は別途対応を検討する必要がありますのでご注意ください…。 次は定期的にバックアップする方法について見ていきましょう! 定期的にバックアップ(コピー)する 注意 robocopyでは製品を使用したバックアップほど細かいことはできません。 ・世代管理は基本出来ない ・誤って削除してしまった場合は救えるが、誤った”更新”は救えない。 一時的な対応や小規模環境など、条件に応じて判断して運用してください。 しっかりとしたバックアップが必要な場合は製品の購入を検討することをオススメします。 実はバックアップの場合でも実行コマンドは「すべてのデータをコピーする」場合とほとんど変更しなくても問題ありません。 要件によりますが、コピー先のデータを削除されないよう「/MIR」を「/E」に変えることでコピー元でファイル削除したとしてもコピー先のファイルをずっと残すことも可能です。※残り続けるためコピー先のディスク容量には注意が必要です。 なので、後は定期的に実行するにはどうするかですが、それには「コマンドのbat化」と「タスクスケジューラー登録」で実現します! ・コマンドのbat化 これはそこまで難しくありません。上記で説明したコマンドをtxtに記載し、ファイル拡張子をbatで保存するだけで終わりです。 基本編の環境をそのまま利用して実際に見ていきましょう。 コマンドをtxtに記述して保存します。 ※保存先はどこでもいいですが、管理しやすい場所にしておきます。 ファイル拡張子を「txt」から「bat」に変更します。(警告が出ますが”はい”で大丈夫です) これでbat化は完了です。 ・タスクスケジューラーの登録 次にこのbat化したファイルをタスクスケジューラーに登録します。 環境によって細かい部分は変わるかと思いますが、今回は以下の条件で登録します。 タスク実行ユーザー Administrator 実行間隔 1日1回、0時開始 タスク停止までの時間 無効 既にタスク実行中の場合 新しいインスタンス(タスク)を実行しない タスク実行時のプライオリティ 通常(6) 「タスクスケジューラーライブラリ」を右クリックし「タスクの作成」を選択 “全般”タブで以下のように設定していきます。 タスク実行ユーザー Administrator 実行間隔 1日1回、0時開始 名前 robocopy 説明 robocopyの実行※記載しなくても問題ありません。 実行ユーザアカウント Administrator ユーザログオン状況 ログオンしてなくても実行する 最上位の特権 有効 構成 タスクを登録する環境に合わせる ※本来「構成」はリモートからタスクを実行する際に、実行する側が古いOSの場合にはそちらに 合わせます。そのため、ローカルで実行する場合にはあまり考慮する必要はありません。 “トリガー”タブで新規を選択 設定を「毎日」にし、開始時間を指定します。 “操作”タブで新規を選択 参照を選択し、先ほど作成したbatを選択します。 “条件”タブで以下のように設定していきます。 AC電源を使用している場合のみ… チェックを外す 電源をバッテリに切り替得る場合 チェックを外す スリープの解除 チェックを付ける “設定”タブで以下のように設定してOKをクリックします。 タスク停止するまでの時間 チェックを外す 要求時に実行中のタスクが… チェックを外す タスクが既に実行中の場合 新しいインスタンスを開始しない 作成したタスクを右クリックし、エクスポートを選択します。 エクスポートしたxmlファイルをメモ帳で開き、プライオリティを7から6に変更して保存します。 これしないとタスクスケジューラーによって実行されるプログラムの優先度が低く、実行しても「あれ、処理が遅いな。。。」という事態を回避できます。 詳しくはTaskSettings. Priority プロパティをご確認ください。 最初に作成していたタスクを削除します。 タスクスケジューラーライブラリを右クリックし、タスクのインポートから編集したxmlファイルを選択します。 タスクが準備完了ステータスになっていることを確認する。 これにてタスクの登録は完了です。これで毎日0時に自動でrobocopyを実行することができます! ちなみに、すべてのデータをコピーするコマンドを同じように登録して毎日実行した場合、差分コピーとして機能しますので ぜひ試してみてください! まとめ いかがだったでしょうか?これにて実践編も終わりです。 robocopyはライセンス費用をかけることなく使用できるので、存在さえ覚えておけばいざというときにきっと役立ちます! それでは最後にポイントのおさらいです! ・すべての”データ”というのはファイルだけでなく権限、属性、タイムスタンプ等も含んでいる。 ・robocopyのオプションはどんな時でも共通して「/ZB」「/R」「/W」オプションは必ず付ける! ・定期実行するためには「コマンドのbat化」と「タスクスケジューラー」を利用する! 今回紹介したオプションは数ある中の一部なので、ぜひ色々なオプションを試してrobocopy使いになってください! 次はなんの記事を書こうかな~。 頂きましたご意見につきましては、今後のより良い商品開発・サービス改善に活かしていきたいと考えております。 良く分かった 分からなかった もっと知りたい 役に立った ありがとう 知っているよ 試してみた 試してみたい 勉強になった 生春巻イイね データ移行お願いしたい Linuxの記事も見たい Author 横T BS事業部 2018年1月 中途入社。現在はBSG事業部所属。 入社後は基盤チームとして1人前になれるよう日々精進中。 最近は生春巻きを巻くことにはまっている。 2022年8月31日 robocopyを試してみた!(実践編) Category インフラ 前の記事を読む 「PG BATTLE 2021」に参加してきました! 次の記事を読む 英語で学ぶIT用語 スケール/スケーラビリティ Recommendation オススメ記事 2023年9月5日 Google Cloud 【Google Cloud】Looker Studio × Looker Studio Pro × Looker を徹底比較!機能・選び方を解説 2023年8月24日 Google Cloud 【Google Cloud】Migrate for Anthos and GKEでVMを移行してみた(1:概要編) 2022年10月10日 Google Cloud 【Google Cloud】AlloyDB と Cloud SQL を徹底比較してみた!!(第1回:AlloyDB の概要、性能検証編) BigQuery ML ワークショップ開催のお知らせ 生成AI導入支援パッケージ Discovery AI導入支援パッケージ Google Cloud ホワイトペーパー 新着記事 2024年9月30日 Google Cloud 【Google Cloud】サーバレスでマネージドなサービス「Cloud Run」でアプリケーションを走らせよう! 2024年9月27日 技術開発 モブレビューを導入して分かったメリットとデメリットについて 2024年9月26日 Google Cloud 自然言語でデータを可視化できるLookerのExplore Assistantを試してみた HOME インフラ robocopyを試してみた!(実践編) ご意見・ご相談・料金のお見積もりなど、お気軽にお問い合わせください。 お問い合わせはこちら HOME Categories お知らせ イベント・セミナー Google Cloud Google Workspace モバイル インフラ 技術開発 ブログ 4koma Tags 生成AI(Generative AI) Looker Studio BigQuery AlloyDB Google Workspace 事例紹介 Cloud SQL STSエンジニアリングマガジン 「サイタル」