Verwenden von Robocopy und Ausschließen mehrerer Verzeichnisse

60

Ich versuche, einige Verzeichnisse von einem Server zu kopieren, bevor ich sie von der Sicherung wiederherstelle (meine letzte Sicherung war beschädigt, daher muss ich eine ältere verwenden :(). Ich bin in der Windows-Wiederherstellungsumgebung und habe Zugriff auf die Serverdatei System G:\und meine Sicherungsmedien.Aber C:\da ich mit Linux besser vertraut bin, habe ich Probleme mit der Befehlszeile in Windows, insbesondere robocopy.

Ich möchte mehrere Verzeichnisse (unter Beibehaltung derselben Verzeichnisstruktur) von G: \ nach C: \ kopieren und dabei andere (nämlich die Ordner Windows und Programme) ausschließen. Ich kann die Syntax für die /XDOption nicht herausfinden . Ich hatte gehofft, etwas zu tun wie:

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

ANMERKUNG: Ich möchte klarstellen, dass ich die eigentlichen Dateien kopieren und gleichzeitig die Verzeichnisstruktur beibehalten möchte. Ich habe gerade geprüft und /createnur leere Dateien erstellt. Seltsam.

GorrillaMcD
quelle

Antworten:

90

Ich habe es mit ein wenig Versuch und Irrtum herausgefunden /L(um den Befehl zu testen, bevor ich ihn wirklich mache). Der Befehl, mit dem ich ende, ist:

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

Anscheinend verhindert das Einschließen von nachgestellten Schrägstrichen, dass Robocopy die Liste der Verzeichnisse korrekt analysiert. Achten Sie daher darauf, keine nachgestellten Schrägstriche in Verzeichnisnamen einzufügen und Anführungszeichen um Verzeichnisse mit Leerzeichen im Namen zu setzen.

Die /MIROption behält beim Kopieren der Dateien dieselbe Verzeichnisstruktur bei.

Edit: Nach einigen Nachforschungen 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 Ergänzungen sind wie folgt:

  • /Z Ermöglicht den Neustart des Jobs
  • /LOG:<logfile path> ist ziemlich selbsterklärend.
  • /XF wird verwendet, um bestimmte Dateitypen auszuschließen, sodass es nicht so lange dauert
GorrillaMcD
quelle
1
Sie können den /?Schalter immer verwenden , um Hilfeinformationen für Windows-Konsolenbefehle abzurufen. Es gibt auch den helpBefehl, der dem Linux- manProgramm ähnelt , aber ich habe nicht gesehen, dass er von Programmen von Drittanbietern verwendet wird.
Ben Richards
Hey, danke für den Kommentar. Ich dachte, es gäbe einen helpBefehl, der jedoch in der Windows-Wiederherstellungsumgebung nicht aktiv zu sein scheint (ich habe eine Fehlermeldung wie "Kein Befehl 'Hilfe' gefunden" erhalten). Robocopy ist ein Windows-Standardbefehl, der xcopy ersetzt und nicht von einem Drittanbieter stammt.
GorrillaMcD
1
Ich weiß, dass es sich um einen Windows-Befehl handelt und nicht um einen von Drittanbietern. Ich habe das nur zur späteren Bezugnahme eingefügt, da Sie sagten, dass Sie mit der Windows-Befehlsumgebung nicht so vertraut sind. :)
Ben Richards
2
Erläuterung: /MIR(Spiegeln von A nach B) zerstört alle Dateien in B, die in A nicht vorhanden sind. Dies ist nützlich, wenn das Verzeichnis, in das Sie kopieren, bereits vorhanden ist und die neue Version (von B) ein genaues Duplikat von A sein soll (wie es derzeit existiert).
SherylHohman
4

Ich weiß, dass dies die Frage von OP nicht beantwortet, aber an jeden hier von Google: XD schlägt in einer Jobdatei fehl, 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 beliebig viele Ausschlüsse, Zeile für Zeile, ohne Anführungszeichen (unabhängig davon, ob Leerzeichen vorhanden sind oder nicht).

Die Art und Weise, wie ich dies entdeckte, war die Verwendung der Befehlszeilenoption / SAVE: myjobname, mit der die Anführungszeichen aus meinen angegebenen Verzeichnissen entfernt wurden!

Chris
quelle
4

Sie müssen den /XDTeil wiederholen

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"
weberjn
quelle
1

Meine Lösung hierfür bestand darin, TXT-Dateien zu erstellen, 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 zum Benennen der Dateien ist 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, füge dann "B" oder "R" (für Backup oder Restore) hinzu, dann "I" oder "X" (für Einschließen oder Ausschließen), dann "D" oder "F" (für Verzeichnis oder Datei). Ich umgebe jeden Eintrag mit doppelten Anführungszeichen und einem Leerzeichen zwischen den Einträgen. Eine "Include" -Datei kann Dateien oder Verzeichnisse enthalten, Verzeichnisse müssen jedoch einen nachgestellten Backslash haben. In einer "Exclude" -Datei für Verzeichnisse verwenden Sie keinen abschließenden Backslash. Alle Verzeichniseinträge sind relativ zum Quellpfad im Befehl robocopy. Der gesamte Inhalt dieser TXT-Dateien muss in einer Zeile und in einer Zeile stehennicht eine carraige Return Zeilenvorschub haben. In meiner Batch-Datei verwende ich einen SET / P-Befehl, um die TXT-Datei in eine Variable zu importieren. Ich benutze diese Variablen dann für DATEIEN oder nach / XF oder / XD. Um beispielsweise das Chrome-Profil des aktuellen Nutzers 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"

Sagen Sie in der bat-Datei 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"
Charlie C
quelle