windows server 2008 r2 – ロボコピーの使用と複数のディレクトリの除外

robocopy windows-server-2008-r2

バックアップから復元する前にサーバーからいくつかのディレクトリをコピーしようとしています(最新のバックアップは壊れていたので、古いものを使用しなければなりません 🙁 )。私はWindowsのリカバリ環境にいて、サーバーのファイルシステムG:\とバックアップメディアC:\にアクセスできます。しかし、Linuxの方が詳しいので、Windowsのコマンドライン、特にrobocopyにはちょっと困っています

G:\からC:\に複数のディレクトリをコピーしたい(同じディレクトリ構造を維持したまま)が、他のディレクトリ(WindowsとProgram Filesフォルダ)は除外したい。/XDオプションの構文がわかりません。私は、次のようなことをしたいと思っていました

robocopy G: C:\backup /CREATE /XD "dir1","dir2", ...

NOTE: ディレクトリ構造を維持しつつ、実際のファイルもコピーしたいということを明確にしておきたい。今確認したところ、/createは空のファイルしか作成しませんでした。おかしいですね

  66  None  2012-10-01


ベストアンサー

ちょっとした試行錯誤と /L (実際に実行する前にコマンドをテストするため) を使って考え出しました。最終的に出来上がったコマンドは以下の通りです

robocopy G: C:\backup /MIR /XD G:\dir1 "G:\dir 2" G:\dir3 ...

どうやら、末尾にスラッシュを含めると robocopy はディレクトリのリストを正しく解析できなくなるようです

/MIRオプションは、ファイルをコピーしている間、同じディレクトリ構造を維持します

編集:もう少し調べたら、コマンドを少し改良しました

robocopy G: C:\backup /MIR /Z /LOG:C:\todaysdate-backup.log /XF *.iso *.log *.au /XD G:\dir1 ...

追加された内容は以下の通りです

  • /Zは、ジョブの再起動を許可します
  • /LOG:<logfile path>はかなり自業自得
  • /XFは特定のファイルタイプを除外するために使われているので、それほど時間はかかりません

100  GorrillaMcD  2012-10-01


の部分を繰り返す必要があります

C:\>robocopy "C:\Users\weberjn\Google Drive" "u:\Google Drive" /e /dcopy:t /copy:DT /r:0 /XD "C:\Users\weberjn\Google Drive\photos" /XD "C:\Users\weberjn\Google Drive\Google Photos"

7  weberjn  2017-10-22


これはOPの質問に答えていないことを知っていますが、googleからここにいる人へ。XDは引用符を使用するとジョブファイルで失敗します

Bad:

::
:: Exclude These Directories :
::
/XD     :: eXclude Directories matching these names
"Temporary Internet Files"

Good:

::
:: Exclude These Directories :
::
/XD     :: eXclude Directories matching these names
Temporary Internet Files

引用符を使わずに(スペースがあるかどうかに関わらず)、好きなだけ除外項目を行の後に配置してください

私がこれを発見した方法は、コマンドラインスイッチ/SAVE:myjobnameを使用して、引用符で囲まれたディレクトリから引用符を取り除いたことでした!

5  Chris  2016-04-07


これに対する私の解決策は、インクルードまたは除外したいファイルまたはディレクトリを含む.txtファイルを作成することでした。これらのファイルは、「Backup」フォルダの下のサブフォルダ「rcXcludes」にあります。ファイルの名前の付け方は以下のようにしています。ファイルの前に “rc” (robocopyの略)を付け、次に robocopyコマンドでアプリケーションやファイルシステムの一部を認識できるように表記し、次に “B “や “R” (Backup or Restoreの略)、”I “や “X” (Include or Excludeの略)、”D “や “F” (Directory or Fileの略)を追加します。各エントリを二重引用符で囲み、エントリとエントリの間にスペースを入れます。インクルード」ファイルには、ファイルまたはディレクトリを含めることができますが、ディレクトリには最後にバックスラッシュを付けなければなりません。ディレクトリの「除外」ファイルでは、末尾のバックスラッシュは使用しません。すべてのディレクトリエントリは robocopy コマンドのソースパスからの相対パスです。これらの.txtファイルの内容は全て一行にまとめて、改行してはいけません。私のバッチファイルでは、SET /Pコマンドを使って.txtファイルを変数にインポートします。私はその後、これらの変数をFILESまたは/XFまたは/XDの後に使用します。例えば、「Default」フォルダ全体をコピーせずに現在のユーザーのChromeプロファイルをバックアップするには、以下のようにします

rcChromeBIF.txt
"Bookmarks" "Custom Dictionary.txt" "Extension Cookies" "Favicons" "History" "Login Data" "Preferences" "Top Sites" "Visited Links" "Web Data" "Databases\" "Extensions\" "Local Storage\" "Plugin Data\" "User Scripts\" "User StyleSheets\"

rcChromeBXF.txt
"Bookmarks.bak" "ChromeDWriteFontCache" "Cookies" "Cookies-journal" "Current Session" "Current Tabs" "Extension Cookies-journal" "Favicons-journal" "Google Profile.ico" "History Provider Cache" "History-journal" "Last Session" "Last Tabs" "Login Data-journal" "Network Action Predictor" "Network Action Predictor-journal" "Network Persistent State" "Origin Bound Certs" "Origin Bound Certs-journal" "QuotaManager" "QuotaManager-journal" "README" "Secure Preferences" "Shortcuts" "Shortcuts-journal" "Top Sites-journal" "TransportSecurity" "Web Data-journal"

rcChromeBXD.txt
"Application Cache" "Cache" "data_reduction_proxy_leveldb" "Extension State" "File System" "GPUCache" "IndexedDB" "JumpListIcons" "JumpListIconsOld" "Local Extension Settings" "Media Cache" "Pepper Data" "Platform Notifications" "Service Worker" "Session Storage" "Storage" "Thumbnails" "Web Applications"

In bat file in, say, C:Backup

REM ChromeBak.bat
SET chromeprofdir=Google\Chrome\User Data\Default
SET /P rcChrmBIF=<C:\Backup\rcXcludes\rcChromeBIF.txt
SET /P rcChrmBXF=<C:\Backup\rcXcludes\rcChromeBXF.txt
SET /P rcChrmBXD=<C:\Backup\rcXcludes\rcChromeBXD.txt
robocopy "%LOCALAPPDATA%\%chromeprofdir%" "H:\ChromeBackup\%chromeprofdir%" %rcChrmBIF% /E /ZB /COPY:DAT /DCOPY:T /MT:4 /XJ /XF %rcChrmBXF% /XD %rcChrmBXD% /R:10 /W:2 /TBD /NP /V /TS /Log+:"H:\ChromeBackup\ChromeBackup.log"

2  Charlie C  2018-03-18


これは Fara Importanta の ServerFault に関する回答The Ultimate Guide to Robocopy で拾ったものを元にした回答です

これは、Charlie Cの回答のように、ファイルを使って除外/包含を保存することについてのものです。しかし、その代わりに/JOBスイッチを利用しています

以下のファイルに格納されている除外リストの例を見てみましょう

exclude.rcj

/XF
*.pyc
*.pyo
*.pyd

/XD
__pycache__
.pytest_cache

ファイル内で複数のスイッチを持ち、読みやすくするために改行で名前を区切ることができることに注目してください!

バッチスクリプトは次のようなものになります

backup.bat

SET _backupDir=backup_path\
SET _excl="%_backupDir%exclude.rcj"

robocopy src_path dest_path /JOB:%_excl%

0  Adehad  2020-05-23


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