2012-10-01 21:32:51 +0000 2012-10-01 21:32:51 +0000
62
62

Mit robocopy und unter Ausschluß mehrerer Verzeichnisse

versuche ich, einige Verzeichnisse von einem Server zu kopieren, bevor ich aus dem Backup wiederherstelle (mein letztes Backup war beschädigt, so daß ich ein älteres verwenden muß :( ). Ich befinde mich in der Windows-Wiederherstellungsumgebung und habe Zugriff auf das Dateisystem des Servers G: versuche ich, einige Verzeichnisse von einem Server zu kopieren, bevor ich aus dem Backup wiederherstelle (mein letztes Backup war beschädigt, so daß ich ein älteres verwenden muß :( ). Ich befinde mich in der Windows-Wiederherstellungsumgebung und habe Zugriff auf das Dateisystem des Servers und meine SicherungsmedienC: versuche ich, einige Verzeichnisse von einem Server zu kopieren, bevor ich aus dem Backup wiederherstelle (mein letztes Backup war beschädigt, so daß ich ein älteres verwenden muß :( ). Ich befinde mich in der Windows-Wiederherstellungsumgebung und habe Zugriff auf das Dateisystem des Servers G: versuche ich, einige Verzeichnisse von einem Server zu kopieren, bevor ich aus dem Backup wiederherstelle (mein letztes Backup war beschädigt, so daß ich ein älteres verwenden muß :( ). Ich befinde mich in der Windows-Wiederherstellungsumgebung und habe Zugriff auf das Dateisystem des Servers und meine Sicherungsmedien . Aber da ich mit Linux besser vertraut bin, habe ich ein paar Probleme mit der Befehlszeile in Windows, insbesondere mitrobocopy`.

Ich möchte mehrere Verzeichnisse (unter Beibehaltung der gleichen Verzeichnisstruktur) von G:\ nach C:\ kopieren, während ich andere ausschließe (nämlich die Windows- und Programmdateien-Ordner). Ich kann die Syntax für die Option /XD nicht herausfinden. Ich hatte gehofft, so etwas zu tun wie:

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

NOTE: Ich möchte klarstellen, daß ich die eigentlichen Dateien unter Beibehaltung der Verzeichnisstruktur ebenfalls kopieren möchte. Ich habe gerade geprüft, und /create erzeugt nur leere Dateien. Merkwürdig.

Antworten (4)

93
93
93
2012-10-01 22:13:49 +0000

Ich habe es mit ein wenig Versuch und Irrtum und dem /L (um den Befehl zu testen, bevor ich ihn wirklich ausführe) herausgefunden. Der Befehl, den ich schließlich erhielt, lautet:

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

Anscheinend hindert das Einfügen von Schrägstrichen robocopy daran, die Liste der Verzeichnisse korrekt zu analysieren, also achten Sie darauf, keine Schrägstriche am Ende von Verzeichnisnamen einzufügen und denken Sie daran, Verzeichnisse mit Leerzeichen im Namen in Anführungszeichen zu setzen.

Die Option /MIR behält die gleiche Verzeichnisstruktur beim Kopieren der Dateien bei.

Edit: Nach etwas mehr Recherche habe ich den Befehl ein wenig verbessert:

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

Die Zusätze sind wie folgt:

  • /Z erlaubt es, den Job neu zu starten
  • /LOG:<logfile path> ist ziemlich selbsterklärend.
7
7
7
2017-10-22 10:08:32 +0000

müssen Sie den /XD-Teil

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"
``` wiederholen
5
5
5
2016-04-07 19:59:41 +0000

Ich weiß, dass dies nicht die Frage von OP beantwortet, aber für jeden hier von Google: XD wird in einer Job-Datei fehlschlagen, wenn Sie Anführungszeichen verwenden.

Schlecht:

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

Gut:

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

Platzieren Sie so viele Ausschlüsse wie Sie wollen, Zeile für Zeile, ohne Anführungszeichen zu verwenden (egal ob Leerzeichen vorhanden sind oder nicht).

Wie ich das herausgefunden habe, war der Kommandozeilenschalter /SAVE:myjobname, der die Anführungszeichen aus meinen zitierten Verzeichnissen entfernt hat!

2
2
2
2018-03-18 05:36:38 +0000

Meine Lösung dafür war die Erstellung von .txt-Dateien, die die Dateien oder Verzeichnisse enthalten, die ich ein- oder ausschließen möchte. Ich habe diese Dateien in einem Unterordner “rcXcludes” unter meinem “Backup”-Ordner. Meine Methode zur Benennung der Dateien lautet wie folgt. Ich stelle ihnen “rc” (für robocopy) voran, dann eine erkennbare Notation für die Anwendung oder einen Teil des Dateisystems im robocopy-Befehl, dann hänge ich “B” oder “R” (für Backup oder Restore) an, dann “I” oder “X” (für Include oder Exclude), dann “D” oder “F” (für Directory oder File). Ich umgebe jeden Eintrag mit doppelten Anführungszeichen und einem Leerzeichen zwischen den Einträgen. Eine “Einschließen”-Datei kann Dateien oder Verzeichnisse enthalten, aber Verzeichnisse müssen einen abschließenden Backslash haben. In einer “Exclude”-Datei für Verzeichnisse verwenden Sie keinen abschliessenden Backslash. Alle Verzeichniseinträge sind relativ zum Quellpfad im Befehl robocopy. Der gesamte Inhalt jeder dieser .txt-Dateien muss in einer Zeile stehen und darf nicht einen Carraige-Return-Zeilenvorschub haben. In meiner Batch-Datei verwende ich einen SET /P-Befehl, um die .txt-Datei in eine Variable zu importieren. Diese Variablen verwende ich dann für FILES oder nach /XF oder /XD. Um zum Beispiel das Chrome-Profil des aktuellen Benutzers zu sichern, ohne den gesamten “Standard”-Ordner zu kopieren, verwende ich Folgendes:

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 der Batch-Datei in, sagen wir, 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"