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

En utilisant robocopy et en excluant les répertoires multiples

, j'essaie de copier certains répertoires d'un serveur avant de les restaurer à partir d'une sauvegarde (ma dernière sauvegarde était corrompue, je dois donc en utiliser une plus ancienne :( ). Je suis dans l'environnement de restauration Windows et j'ai accès au système de fichiers du serveur G: , j'essaie de copier certains répertoires d'un serveur avant de les restaurer à partir d'une sauvegarde (ma dernière sauvegarde était corrompue, je dois donc en utiliser une plus ancienne :( ). Je suis dans l'environnement de restauration Windows et j'ai accès au système de fichiers du serveur et à mon support de sauvegardeC: , j'essaie de copier certains répertoires d'un serveur avant de les restaurer à partir d'une sauvegarde (ma dernière sauvegarde était corrompue, je dois donc en utiliser une plus ancienne :( ). Je suis dans l'environnement de restauration Windows et j'ai accès au système de fichiers du serveur G: , j'essaie de copier certains répertoires d'un serveur avant de les restaurer à partir d'une sauvegarde (ma dernière sauvegarde était corrompue, je dois donc en utiliser une plus ancienne :( ). Je suis dans l'environnement de restauration Windows et j'ai accès au système de fichiers du serveur et à mon support de sauvegarde . Mais, comme je suis plus familier avec Linux, j'ai un peu de mal avec la ligne de commande dans Windows, en particulierrobocopy`.

Je veux copier plusieurs répertoires (en maintenant la même structure de répertoires) de G:\ à C:\ tout en excluant les autres (à savoir, les dossiers Windows et Program Files). Je n'arrive pas à comprendre la syntaxe de l'option /XD. J'espérais faire quelque chose comme :

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

NOTE: Je tiens à préciser que je veux copier les fichiers réels tout en conservant la structure des répertoires également. Je viens de vérifier, et /create ne crée que des fichiers vides. Bizarre.

Réponses (4)

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

J'ai trouvé la solution avec un peu d'essais et d'erreurs et le /L (pour tester la commande avant de la faire pour de vrai). La commande que j'ai obtenue est la suivante :

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

Apparemment, le fait d'inclure des barres obliques à la fin du nom empêche robocopy d'analyser correctement la liste des répertoires, donc assurez-vous de ne pas inclure de barres obliques à la fin du nom des répertoires et n'oubliez pas de mettre des guillemets autour des répertoires contenant des espaces.

L'option /MIR conserve la même structure de répertoire lors de la copie des fichiers.

Edit: Après quelques recherches supplémentaires, j'ai amélioré un peu la commande :

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

Les ajouts sont les suivants :

  • /Z permet de redémarrer le travail
  • /LOG:<logfile path> est assez explicite.
  • /XF est utilisé pour exclure certains types de fichiers afin que cela ne prenne pas trop de temps
7
7
7
2017-10-22 10:08:32 +0000

vous devez répéter la /XDpartie

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

Je sais que cela ne répond pas à la question d'OP, mais à quiconque ici présent de Google : XD échouera dans un fichier de travail si vous utilisez des guillemets.

Mauvais :

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

Bon :

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

Placez autant d'exclusions que vous voulez, ligne après ligne, sans utiliser de guillemets (qu'il y ait des espaces ou non).

La façon dont j'ai découvert cela a été en utilisant le commutateur de ligne de commande /SAVE:myjobname qui a enlevé les guillemets de mes répertoires cités !

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

Ma solution pour cela a été de créer des fichiers .txt qui contiennent les fichiers ou les répertoires que je veux inclure ou exclure. J'ai ces fichiers dans un sous-dossier “rcXcludes” sous mon dossier “Backup”. Ma méthode pour nommer les fichiers est la suivante. Je les fais précéder de “rc” (pour robocopy), puis d'une notation reconnaissable pour l'application ou une partie du système de fichiers dans la commande robocopy, puis j'ajoute “B” ou “R” (pour Backup ou Restore), puis “I” ou “X” (pour Include ou Exclude), puis “D” ou “F” (pour Directory ou File). J'entoure chaque entrée de guillemets doubles et d'un espace entre les entrées. Un fichier “Include” peut contenir des fichiers ou des répertoires, mais les répertoires doivent être suivis d'une barre oblique inversée. Dans un fichier “Exclure” pour les répertoires, vous n'utilisez pas de barre oblique inversée. Toutes les entrées de répertoire sont relatives au chemin source dans la commande robocopy. Le contenu entier de ces fichiers .txt doit être sur une seule ligne et ne doit pas avoir de retour à la ligne carraige. Dans mon fichier batch, j'utilise une commande SET /P pour importer le fichier .txt dans une variable. J'utilise ensuite ces variables pour les FILES ou après /XF ou /XD. Par exemple, pour sauvegarder le profil Chrome de l'utilisateur actuel sans copier tout le dossier “Default”, j'utilise ce qui suit.

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"

Dans le fichier bat, disons 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"