Utilizzo di robocopy ed esclusione di più directory


60

Sto cercando di copiare alcune directory da un server prima di ripristinare dal backup (il mio ultimo backup è stato danneggiato, quindi devo usarne uno più vecchio :(). Sono nell'ambiente di recupero di Windows e ho accesso al file del server sistema G:\e il mio supporto di backup C:\, ma, dal momento che ho più familiarità con Linux, sto avendo un po 'di problemi con la riga di comando in Windows, in particolare robocopy.

Voglio copiare più directory (mantenendo la stessa struttura di directory) da G: \ a C: \ escludendone altre (vale a dire le cartelle Windows e Programmi). Non riesco a capire la sintassi per l' /XDopzione. Speravo di fare qualcosa del tipo:

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

NOTA: voglio chiarire che voglio copiare i file effettivi mantenendo anche la struttura delle directory. Ho appena controllato e /createcrea solo file vuoti. Strano.

Risposte:


92

L'ho capito con una piccola prova ed errore e il /L(per testare il comando prima di farlo sul serio). Il comando con cui finisco è:

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

Apparentemente, includere le barre finali impedisce a robocopy di analizzare correttamente l'elenco delle directory, quindi assicurati di non includere barre finali nei nomi delle directory e ricorda di inserire virgolette nelle directory con spazi nel nome.

L' /MIRopzione mantiene la stessa struttura di directory durante la copia dei file.

Modifica: dopo qualche altra ricerca, ho migliorato un po 'il comando:

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

Le aggiunte sono le seguenti:

  • /Z consente di riavviare il lavoro
  • /LOG:<logfile path> è piuttosto autoesplicativo.
  • /XF viene utilizzato per escludere determinati tipi di file, quindi non ci vuole molto tempo

1
Puoi sempre utilizzare l' /?opzione per ottenere informazioni di aiuto per i comandi della console di Windows. C'è anche il helpcomando, che è simile al manprogramma Linux , ma non l'ho visto usato da programmi di terze parti (potrebbe essere - non ho familiarità con come funziona, o se è possibile).
Ben Richards,

Ehi, grazie per il commento. Ho pensato che ci fosse un helpcomando, ma non sembra essere attivo nell'ambiente di recupero di Windows (ho ricevuto un errore come "Nessun comando 'aiuto' trovato"). Robocopy è un comando predefinito di Windows che ha sostituito xcopy e non è di terze parti.
GorrillaMcD

1
So che è un comando di Windows e non di terze parti. L'ho inserito solo per riferimento futuro, dal momento che hai detto di non avere familiarità con l'ambiente di comando di Windows. :)
Ben Richards,

2
chiarimento: /MIR(Specificare da A a B) distrugge tutti i file in B che non sono presenti in A. Ciò è utile quando la directory in cui si sta copiando esiste già e si desidera che la nuova versione (di B) sia un duplicato esatto di A (come esiste attualmente).
SherylHohman,

4

So che questo non risponde alla domanda di OP, ma a chiunque qui da Google: XD fallirà in un file di lavoro se usi le virgolette.

Male:

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

Buono:

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

Inserisci tutte le esclusioni che desideri, riga dopo riga, senza utilizzare le virgolette (indipendentemente dal fatto che siano presenti spazi).

Il modo in cui l'ho scoperto è stato usando l'opzione della riga di comando / SALVA: myjobname che ha tolto le virgolette dalle mie directory citate!


4

devi ripetere la /XDparte

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

La mia soluzione per questo era quella di creare file .txt che contengano i file o le directory che voglio includere o escludere. Ho questi file in una sottocartella "rcXcludes" nella mia cartella "Backup". Il mio metodo per nominare i file è il seguente. Li prefiggo con "rc" (per robocopy), quindi con qualche notazione riconoscibile per l'applicazione o parte del file system nel comando robocopy, quindi aggiungo "B" o "R" (per backup o ripristino), quindi "I" o "X" (per Includi o Escludi), quindi "D" o "F" (per Directory o File). Circondo ogni voce con doppie virgolette e uno spazio tra le voci. Un file "Includi" può contenere file o directory, ma le directory devono avere una barra rovesciata finale. In un file "Escludi" per le directory non si utilizza una barra rovesciata finale. Qualsiasi voce della directory è relativa al percorso di origine nel comando robocopy. L'intero contenuto di uno di questi file .txt deve essere su una riga enon dispone di un feed della riga di ritorno di Carraige. Nel mio file batch, utilizzo un comando SET / P per importare il file .txt in una variabile. Quindi uso queste variabili per FILES o dopo / XF o / XD. Ad esempio, per eseguire il backup del profilo Chrome dell'utente corrente senza copiare l'intera cartella "Predefinita", utilizzo quanto segue.

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"

Nel file bat in, diciamo, 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"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.