あるサーバーから別のサーバーへファイルをコピーすることは、システム管理者が日常的に直面する、かなり頻繁な作業です。ITの多くのことと同様に、この作業を行う方法はいくつもあります。どの方法を選ぶかは、状況と個人の好みによって決まります。以下の情報では、両方のサーバーが同一のドメインにあることを前提としています。
コマンドラインが苦手なら、ファイルを新しいサーバーへ単にドラッグ&ドロップするだけでも構いません。ただし Windows エクスプローラーには、実際のエラー処理やログ記録がほとんどないため、何かがうまくいかなかった場合には、原因が何だったのかを推測することになってしまいます。エクスプローラーを強化する優れたサードパーティ製ツールはいくつかありますが、多くの管理者はサーバーをできるだけ軽量でクリーンな状態に保ちたいと考えています。
仮想マシンの現代的な環境では、別の選択肢として、仮想マシン(VM)ファイル全体をそのままコピーし、そのコピーを宛先サーバーのセカンダリ ドライブとして接続する方法があります。これは、すべてのファイルと同一の権限設定をすべてそのまま維持したい場合に限って有効です。目的がそれであれば、手順は簡単でうまく機能します。
Robocopy を使ってサーバーにファイルをコピーする方法
サーバーに一部のファイルだけをコピーしたい場合は、たぶん Robocopy を使うのがよいでしょう。Robocopy は Windows Server 2003 から使われており、とても強力なツールです。Robocopy を使えば、単一ファイルをコピーしてすべての権限を削除したり、すべての NTFS 権限をそのまま保持しながらドライブ全体をミラーリングしたり、さらにその間にあるさまざまなことをほぼ何でも実行できます。作業ステーションから Robocopy を実行し、ソースと宛先のファイル サーバーを指定することも可能ですが、サーバーの 1 台で直接実行したほうが高速で、ネットワーク トラフィックも少なくなります。
たとえば Server1 の DATA フォルダーを Server2 にコピーしたい場合は、次のコマンドを使用できます:
- Robocopy \\server1\data \\server2\data /mir /copyall /dcopy:T
これは、すべての権限とタイムスタンプを含めて、ソースフォルダー構造を正確にコピーします。ミラーを作成するため、ソースと一致しないものは宛先側からも削除されます。空の宛先にコピーする場合には最適ですが、そこにすでにデータがある場合は潜在的に危険です。
フォルダー全体をコピーしたいものの、権限は保持したくない、または宛先フォルダーから何も削除したくない場合は、次のコマンドを使用できます。
- Robocopy \\server1\data \\server2\data /e
しかし Robocopy は単なる単純コピーをするだけではありません。先ほども述べたとおり、非常に強力なツールです。ソースフォルダーを監視(/mon)し、変更が検出されたら再度コピーするように設定できます。実際には何もコピーせずに結果をプレビューするために、/l(一覧のみ)に設定することもできます。隠し属性が設定されているファイルだけをコピーする(/ia:H)ようにすることも、隠しファイルを除外する(/xa:H)こともできます。
ファイルのコピーを伴わない操作もいくつか行えます。たとえば、すべての権限をコピーしたかったので /copyall オプションを使ったものの、その後にソース側で一部の権限を変更する必要が出てくる場合があります。その場合は /sec /nocopy を使うことで、サーバーからファイルをもう一度コピーしなくても権限を更新できます。
このツールの使い方には、完全なログ記録機能など、ほかにも多くの方法があります。Robocopy パラメーターの完全な一覧はこちらです: Robocopy コマンドライン参照。
共有する
もっと詳しく
著者について