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

Usando robocopy ed escludendo più directory

sto cercando di copiare alcune directory da un server prima di effettuare il ripristino dal backup (il mio ultimo backup era corrotto, quindi devo usare una più vecchia :( ). Sono nel Recovery Environment (Ambiente di ripristino) di Windows e ho accesso al file system del server G: sto cercando di copiare alcune directory da un server prima di effettuare il ripristino dal backup (il mio ultimo backup era corrotto, quindi devo usare una più vecchia :( ). Sono nel Recovery Environment (Ambiente di ripristino) di Windows e ho accesso al file system del server e al mio supporto di backupC: sto cercando di copiare alcune directory da un server prima di effettuare il ripristino dal backup (il mio ultimo backup era corrotto, quindi devo usare una più vecchia :( ). Sono nel Recovery Environment (Ambiente di ripristino) di Windows e ho accesso al file system del server G: sto cercando di copiare alcune directory da un server prima di effettuare il ripristino dal backup (il mio ultimo backup era corrotto, quindi devo usare una più vecchia :( ). Sono nel Recovery Environment (Ambiente di ripristino) di Windows e ho accesso al file system del server e al mio supporto di backup . Ma, dato che ho più familiarità con Linux, ho qualche problema con la riga di comando di Windows, nello specificorobocopy`.

voglio copiare più directory (mantenendo la stessa struttura di directory) da G:\ a C:\ escludendone altre (cioè le cartelle Windows e Program Files). Non riesco a capire la sintassi dell'opzione /XD. Speravo di fare qualcosa come:

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


** NOTA:** Voglio chiarire che voglio copiare i file effettivi mantenendo anche la struttura delle directory. Ho appena controllato, e `/create` crea solo file vuoti. Strano.

Risposte (4)

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

L'ho capito con una piccola prova ed errore e l’/L (per testare il comando prima di farlo per davvero). Il comando che ho trovato è:

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

Apparentemente, includendo i trailing slashes si impedisce a robocopy di analizzare correttamente l'elenco delle directory, quindi assicurarsi di non includere trailing slashes sui nomi delle directory e ricordarsi di mettere le virgolette intorno alle directory con spazi nel nome.

L'opzione /MIR mantiene la stessa struttura di directory mentre si copiano i 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 ...
``` &001 


Le aggiunte sono le seguenti: 


- `/Z` permette di riavviare il lavoro 
- `/LOG:<logfile path>` è abbastanza autoesplicativo. 
- `/XF` viene usato per escludere certi tipi di file, quindi non ci vuole così tanto tempo
7
7
7
2017-10-22 10:08:32 +0000

si deve ripetere il /XDpart

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

So che questo non risponde alla domanda di OP, ma a chiunque qui da google: XD fallisce in un file di lavoro se si usano le virgolette.

Bad:

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

Good:

&001 &001

Posiziona tutte le esclusioni che vuoi, riga dopo riga, senza usare le virgolette (che ci siano spazi o meno).

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

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

La mia soluzione è stata quella di creare file .txt che contengono 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 dare un nome ai file è il seguente. Li prefaccio con “rc” (per robocopy), poi qualche notazione riconoscibile per l'applicazione o parte del file system nel comando robocopy, poi aggiungo “B” o “R” (per Backup o Restore), poi “I” o “X” (per Includere o Escludere), poi “D” o “F” (per Directory o File). Circondo ogni voce con doppie virgolette e uno spazio tra le voci. Un file “Include” può avere file o directory, ma le directory devono avere una barra di ritorno. In un file “Escludi” per le directory non si usa un backslash trailing. Tutte le voci di directory sono relative al percorso di origine nel comando robocopy. L'intero contenuto di uno qualsiasi di questi file .txt deve essere su una sola riga e non avere un feed di linea di ritorno carraige. Nel mio file batch, uso un comando SET /P per importare il file .txt in una variabile. Poi uso queste variabili per FILES o dopo /XF o /XD. Per esempio, per fare il backup del profilo Chrome dell'utente corrente senza copiare l'intera cartella “Default”, uso 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, ad esempio, 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"