【Windows】WindowsサーバのRobocopyデータ移行を効率化する

windows server

前回、RHELサーバのrsyncによるデータ移行について記載しましたので、今回は、Windowsサーバ環境でrobocopyを使用したデータ移行について、特に権限の保持に焦点を当てながら解説します。基本的な使い方から大規模データ移行の効率的な方法まで説明していきます。

robocopyとは?

robocopy(Robust File Copy)は、Windowsに標準搭載されている高機能なファイルコピーツールです。通常のコピーコマンドと比べて、ネットワーク接続が途切れた場合の再開機能や、ファイルの属性・タイムスタンプの保持など、多くの優れた機能を持っています。

基本的な使い方

robocopyの基本的な構文は以下の通りです:

robocopy [コピー元] [コピー先] [オプション]

例えば、E:\SourceフォルダからF:\Destinationフォルダにファイルをコピーする場合、以下のようになります:

robocopy E:\Source F:\Destination

権限を保持する方法

データ移行において最も重要な点の一つが、ファイルやフォルダの権限を正確に保持することです。robocopyでは、以下のオプションを使用することで、権限を含むさまざまな属性を保持できます。

1. /COPY:オプション

/COPY:オプションを使用すると、ファイルのどの属性をコピーするかを指定できます。権限を保持するには、以下のように使用します:

robocopy E:\Source F:\Destination /COPY:DATSOU

ここで、DATSOUは以下を意味します:
– D: データ
– A: 属性
– T: タイムスタンプ
– S: セキュリティ(NTFS権限)
– O: 所有者情報
– U: 監査情報

2. /SEC オプション

/SECオプションは、ファイルのセキュリティ属性(NTFS権限)をコピーします。/COPYオプションと併用することで、より確実に権限を保持できます:

robocopy E:\Source F:\Destination /COPY:DAT /SEC

3. /DCOPY:T オプション

ディレクトリのタイムスタンプを保持したい場合は、このオプションを使用します:

robocopy E:\Source F:\Destination /COPY:DATSOU /DCOPY:T

大規模データ移行のための効率的な方法

大規模なデータ移行を行う際は、以下のオプションを組み合わせることで、効率的かつ確実な移行が可能になります。

1. /MIR オプション

/MIRオプションは、コピー先をコピー元のミラーにします。つまり、コピー元にないファイルやフォルダは、コピー先から削除されます:

robocopy E:\Source F:\Destination /MIR /COPY:DATSOU /DCOPY:T

2. /MT オプション

/MTオプションを使用すると、マルチスレッドコピーが可能になり、パフォーマンスが向上します:

robocopy E:\Source F:\Destination /MIR /COPY:DATSOU /DCOPY:T /MT:8

この例では、8つのスレッドを使用しています。使用するスレッド数は、サーバーのCPU性能に応じて調整してください。

3. /Z オプション

ネットワーク経由でのコピーで途中で接続が切れた場合、/Zオプションを使用することで、中断したポイントから再開できます:

robocopy E:\Source F:\Destination /MIR /COPY:DATSOU /DCOPY:T /MT:8 /Z

4. /LOG オプション

大規模なデータ移行では、ログを取ることが重要です。/LOGオプションを使用することで、詳細なログファイルを生成できます:

robocopy E:\Source F:\Destination /MIR /COPY:DATSOU /DCOPY:T /MT:8 /Z /LOG:C:\temp\migration_log.txt

実践的なシナリオ:ファイルサーバの移行

ここでは、使用中のファイルサーバを差分なく新しいサーバに移行する手順を説明します。

1. 初回コピー
まず、初回の完全コピーを行います。この際、ユーザーのアクセスを制限する必要はありません:

robocopy \\OldServer\Share \\NewServer\Share /MIR /COPY:DATSOU /DCOPY:T /MT:16 /Z /LOG:C:\temp\initial_copy_log.txt

2. 差分コピー
初回コピー完了後、実際の移行直前に差分コピーを行います。この際、ユーザーアクセスを制限することをお勧めします:

robocopy \\OldServer\Share \\NewServer\Share /MIR /COPY:DATSOU /DCOPY:T /MT:16 /Z /LOG:C:\temp\diff_copy_log.txt

3. 検証
移行後、以下のコマンドを使用して、ファイル数と総サイズを比較することで、移行が正しく行われたかを検証できます:

robocopy \\OldServer\Share \\NewServer\Share /E /L /NS /NC /NDL /NJH /NJS

robocopyを選択する理由

1. 効率性:マルチスレッドコピーや再開機能により、大規模データの移行を効率的に行えます。
2. 柔軟性:多様なオプションにより、様々なシナリオに対応できます。
3. 信頼性:権限やタイムスタンプなどの重要な属性を確実に保持できます。
4. コスト:Windowsに標準搭載されているため、追加コストがかかりません。

他のデータ移行方法(例:手動コピー、サードパーティツール)と比較して、robocopyは特に大規模なファイルサーバ移行において優れた選択肢となります。

まとめ

robocopyを使用したデータ移行は、効率的かつ信頼性の高い方法です。本記事で紹介した基本的な使い方や、権限を保持するためのオプション、大規模データ移行のためのテクニックを活用することで、スムーズなデータ移行が可能になります。

ここに記載された内容を参考にデータ移行計画を立てて頂けたなら幸いです。

 

【注意】

このブログは技術に関する知識や経験を共有することを目的としており、情報の正確性に努めていますが、その内容の正確性や完全性を保証するものではありません。ブログの情報を利用する場合は、自己の責任において行動してください。ブログの内容に基づいて行った行動や決定によって生じた損害や被害について、筆者は一切の責任を負いません。

 

記事の内容の一部は、生成AIで作成しています。

windows server
この記事の作者
StarTeller

30歳で異業種からITエンジニアへ転身し、10年以上にわたりインフラエンジニアとして様々な現場でシステム構築・運用に携わってきました。

得意分野はLinux/Windowsのサーバー構築・運用で、ネットワークやAWSなども実務で活用しています。

このブログでは、これまでの業務で培った経験を基に、日々の業務で遭遇した問題の解決方法や、システム構築の具体的な手順を解説。現場のエンジニアが実際に「困ったとき」に参照できる情報を意識して投稿していこうと思っています。

StarTellerをフォローする
StarTellerをフォローする

コメント

タイトルとURLをコピーしました