web-dev-qa-db-ja.com

ロボコピーの使用と複数ディレクトリの除外

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

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

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

注:ディレクトリ構造も維持しながら実際のファイルをコピーすることを明確にしたいと思います。確認したところ、/createは空のファイルしか作成しません。変です。

55
GorrillaMcD

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

私はこれがOPの質問に答えないことを知っています、しかしここからグーグルからの誰かに:あなたが引用符を使うならば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
Chris

/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"
4
weberjn

これに対する私の解決策は私が包含または除外したいファイルまたはディレクトリを含む.txtファイルを作成することでした。これらのファイルは、私の "Backup"フォルダの下の "rcXcludes"サブフォルダにあります。ファイルの命名方法は次のとおりです。その前に "rc"(robocopy用)を付け、次にrobocopyコマンドでアプリケーションまたはファイルシステムの一部にわかりやすい表記を付け、次に "B"または "R"(バックアップまたは復元用)を追加し、次に "I"を付けます。または「X」(包含または除外)、「D」または「F」(ディレクトリまたはファイル)。各エントリは二重引用符とエントリ間のスペースで囲みます。 「インクルード」ファイルにはファイルまたはディレクトリを含めることができますが、ディレクトリには末尾の円記号を付ける必要があります。ディレクトリ用の "Exclude"ファイルでは、末尾の円記号を使用しません。どのディレクトリエントリも、robocopyコマンドのソースパスからの相対パスです。これらの.txtファイルのすべての内容は1行に収まっている必要があり、notは復帰改行を持ちます。私のバッチファイルでは、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"

のbatファイルで、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"
1
Charlie C