ロボコピーを使用し、複数のディレクトリを除外する


60

バックアップから復元する前にサーバーからいくつかのディレクトリをコピーしようとしています(最新のバックアップが破損しているため、古いバックアップを使用する必要があります:()。Windows回復環境にあり、サーバーのファイルにアクセスできます。システムG:\とバックアップメディアC:\しかし、私はLinuxに精通しているので、Windowsのコマンドライン、特にに少し問題がありrobocopyます。

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

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

注:ディレクトリ構造も維持しながら、実際のファイルをコピーすることを明確にしたいと思います。チェックしたところ、/create空のファイルのみが作成されました。奇妙な。

回答:


90

少し試行錯誤して/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 特定のファイルタイプを除外するために使用されているため、それほど時間がかかりません

1
いつでも/?スイッチを使用して、Windowsコンソールコマンドのヘルプ情報を取得できます。helpLinuxのmanプログラムに似たコマンドもありますが、サードパーティのプログラムで使用されるのを見たことはありません(可能性があります-動作の仕組みに詳しくないか、それが可能かどうかはわかりません)。
ベンリチャーズ

ねえ、コメントありがとう。helpコマンドがあると思ったが、Windows Recovery Environmentでアクティブになっていないようだ(「コマンド 'ヘルプ'が見つかりません」などのエラーを受け取った)。Robocopyは、xcopyを置き換えるWindowsのデフォルトコマンドであり、サードパーティではありません。
GorrillaMcD

1
私はそれがWindowsコマンドであり、サードパーティではないことを知っています。あなたは、Windowsのコマンド環境に慣れていないと言っていたので、将来の参考のためにそこにそれを置いただけです。:)
ベンリチャーズ

2
明確化:(/MIRミラーAからB)Aに存在しないBのファイルをすべて破棄します。これは、コピー先のディレクトリがすでに存在し、(Bの)新しいバージョンをAの正確な複製にする場合に便利です。 (現在存在するとおり)。
シェリルホーマン

4

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

悪い:

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

良い:

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

引用符を使用せずに、必要な数の除外を行ごとに配置します(スペースがあるかどうか)。

これを発見したのは、コマンドラインスイッチ/ SAVE:myjobnameを使用して、引用されたディレクトリから引用符を削除することでした。


4

あなたは/XD部分を繰り返す必要があります

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"

1

これに対する私の解決策は、含めるまたは除外するファイルまたはディレクトリを含む.txtファイルを作成することでした。これらのファイルは、「バックアップ」フォルダーの下のサブフォルダー「rcXcludes」にあります。ファイルの命名方法は次のとおりです。「rc」(robocopyの場合)、robocopyコマンドでアプリケーションまたはファイルシステムの一部の認識可能な表記を前に付け、「B」または「R」(バックアップまたは復元の場合)、「I」の順に追加します。または「X」(包含または除外)、次に「D」または「F」(ディレクトリまたはファイル)。各エントリを二重引用符とエントリ間のスペースで囲みます。「含める」ファイルにはファイルまたはディレクトリを含めることができますが、ディレクトリには末尾のバックスラッシュが必要です。ディレクトリの「除外」ファイルでは、末尾のバックスラッシュを使用しません。ディレクトリエントリは、robocopyコマンドのソースパスに関連しています。これらの.txtファイルのすべての内容は1行である必要があり、キャレージリターンラインフィードがありません。バッチファイルでは、SET / Pコマンドを使用して、.txtファイルを変数にインポートします。次に、これらの変数をFILESに使用するか、/ XFまたは/ XDの後に使用します。たとえば、「デフォルト」フォルダ全体をコピーせずに現在のユーザーの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"

たとえば、C:\ Backupのbatファイル。

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"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.