xcopyでファイルをバックアップする ―xcopyのコピー除外リストを活用する―Tech TIPS

xcopyコマンドを使うと、フォルダー全体をコピーすることができる。バッチファイルとタスクスケジューラを組み合わせると、簡単なバックアップシステムにすることができる。xcopyでコピーしたくないファイルやフォルダーがある場合は、コピー除外リストを利用するとよい。

» 2004年07月09日 05時00分 公開
[打越浩幸デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象OS:Windows 2000/Windows XP/Windows Server 2003


解説

 xcopyコマンドは、ファイルやフォルダーをツリー状態のままコピーするコマンドである。このコマンドとWindows OSのタスクスケジュール機能を組み合わせることにより、簡単なファイルのバックアップシステムにすることができる。例えば、以下のようなバッチファイルを作成しておいて、1日に何回か動作するようにしておけばよいだろう。

※ファイル c:\bat\copyall.batの例(除外リストなし)

if exist z:\. net use z: /delete
if not exist z:\. net use z: \\backupserver\backupvol

set logfile=c:\log\copyall.log
xcopy c:\usr z:\usr\ /D /S /E /H /C /Y /R >> %logfile%



 最初に、コピー先のドライブをz:ドライブにマップしておき(マップしなくてもよいが、複数のフォルダーをコピーさせる場合はこの方が便利)、コピー元(c:\usr)の内容を、全て\\backupserver\backupvol\usrというフォルダーにコピーさせている。さらにxcopyコマンドの実行結果をc:\log\copyall.logというファイルに記録しているが、これは、後でコピーが正常に動作しているかどうかなどを確認するためである。必要なければ省いてもよい。

 xcopyにはさまざまなオプションがあるが、ここでは「/D /S /E /H /C /Y /R」を指定している。「/D」は新しいファイルだけをコピーするというオプション、「/S /E」は(空のものも含めて)サブフォルダーもコピーする、「/H」は隠しファイルもコピーする、「/C」はエラーを無視してコピーする、「/Y」は無条件上書きコピーする、「/R」は読み取り専用ファイルもコピーする、というオプションである。xcopyのオプションの詳細については「xcopy /?」などで確認していただきたい。

●コピーさせたくないファイルやフォルダーを指定する

 ところでこのようなバッチファイルを使ってバックアップを行う場合、場合によってはアプリケーションの作成する一時ファイルまでもコピーされてしまうことがある。例えばMicrosoft Wordを使ってfilecopy.docというファイルを編集する場合、編集元のファイルがそのままオープンされるのではなく、「~$lecopy.doc」や「~WRLnnnn.tmp(nnnnは数字列)」といった一時ファイルが作成され、編集に利用される。これらのファイルをバックアップしても意味はないし、ディスク領域の無駄でもある。可能ならば、このような一時ファイルはコピー(バックアップ)しないようにしておきたい。

 幸いなことにxcopyでは、コピーから除外するファイルの一覧リストを指定することができるので、先ほどのバッチファイルを改良してみよう。

※ファイル c:\bat\copyall.batの例(除外リストあり)

if exist z:\. net use z: /delete
if not exist z:\. net use z: \\backupserver\backupvol

set logfile=c:\log\copyall.log
xcopy c:\usr z:\usr\ /EXCLUDE:C:\BAT\xcopy-excludelist.txt /D /S /E /H /C /Y /R >> %logfile%



 ここで、「/EXCLUDE:C:\BAT\xcopy-excludelist.txt」がコピーから除外するファイルのリストを指定するパラメーターである。除外リストは、このように別ファイルにしてxocpyコマンドに与える。このファイルには、xcopyの対象とさせないファイルやフォルダー名(の一部)を、1行に付き、1つずつ記述する。例えば、次のような一覧リストをテキストエディターで作成し、xcopyの/excludeオプションで指定したファイルに書き込んでおく。

※除外リストファイルc:\bat\xcopy-excludelist.txtの例

$~
~$
~WRL
.tmp
.temp
IMG00001.DAT
.bkf
.qic
.iso
.img
.mp3
.wmv
.wma
outlook.pst
Thumbs.db
pspbrwse.jbf
pagefile.sys
win386.swp
catalog.wci
.ci
.0
.1
.2
.3
.4
.5
.6
.7
.8
.9
.000
.001
.002
.003
.004
.005
.006
.007
.008
.009
.log
@done
@work
@backup



 これらのエントリは、xcopyでコピーするファイルやフォルダーの名前と比較され、その一部がマッチしていると、コピーされずにスキップされる(完全一致ではなく、部分一致であることに注意)。ここでは、Microsoft Wordの一時ファイルだけでなく、その他のアプリケーションで作成される一時ファイルや、バックアップするにはサイズが大きすぎるファイル(ページファイルなど)、バックアップしてもあまり意味のないファイル/フォルダー、などを指定している。この辺りは各自の環境に合わせて変更していただきたい。

■更新履歴

【2004/07/09】記事公開当初、xcopyの除外リストオプションに関して「xcopyの/cオプションで指定したファイルに書き込んでおく。」と記述しておりましたが、正しくは「/excludeオプションで指定したファイルに書き込んでおく。」の間違いでした(マーカー部分が間違い)。おわびして訂正させていただきます。

【2004/07/03】初版公開。


「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。