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

Usando robocopy e excluindo múltiplos directórios

estou a tentar copiar alguns directórios de um servidor antes de restaurar a partir do backup (o meu último backup estava corrompido, por isso tenho de usar um mais antigo :( ). Estou no Windows Recovery Environment e tenho acesso ao sistema de ficheiros do servidor G: estou a tentar copiar alguns directórios de um servidor antes de restaurar a partir do backup (o meu último backup estava corrompido, por isso tenho de usar um mais antigo :( ). Estou no Windows Recovery Environment e tenho acesso ao sistema de ficheiros do servidor e à minha media de backupC: estou a tentar copiar alguns directórios de um servidor antes de restaurar a partir do backup (o meu último backup estava corrompido, por isso tenho de usar um mais antigo :( ). Estou no Windows Recovery Environment e tenho acesso ao sistema de ficheiros do servidor G: estou a tentar copiar alguns directórios de um servidor antes de restaurar a partir do backup (o meu último backup estava corrompido, por isso tenho de usar um mais antigo :( ). Estou no Windows Recovery Environment e tenho acesso ao sistema de ficheiros do servidor e à minha media de backup . Mas, como estou mais familiarizado com Linux, estou a ter alguns problemas com a linha de comandos no Windows, especificamente norobocopy`.

Quero copiar múltiplos directórios (mantendo a mesma estrutura de directórios) de G:\ para C:\ enquanto excluo outros (nomeadamente, as pastas Windows e Ficheiros de Programas). Não consigo perceber a sintaxe para a opção /XD. Eu esperava fazer algo como:

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

NOTE: Quero esclarecer que também quero copiar os ficheiros reais enquanto mantenho a estrutura de directórios. Acabei de verificar, e o /create apenas cria ficheiros vazios. Esquisito.

Respostas (4)

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

Descobri-o com uma pequena tentativa e erro e o /L (para testar o comando antes de o fazer de verdade). O comando com que acabo por me deparar é:

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

Aparentemente, a inclusão de barras de arrasto impede o robocopy de analisar correctamente a lista de directórios, por isso não inclua barras de arrasto nos nomes dos directórios e lembre-se de colocar aspas à volta dos directórios com espaços no nome.

A opção /MIR mantém a mesma estrutura de directórios enquanto copia os ficheiros.

Edit: Depois de mais alguma pesquisa, melhorei um pouco o comando:

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

As adições são as seguintes:

  • /Z permite reiniciar o trabalho
  • /LOG:<logfile path> é bastante auto-explicativo.
  • /XF está a ser usado para excluir certos tipos de ficheiros para que não demore tanto
7
7
7
2017-10-22 10:08:32 +0000

tem de repetir o /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

Sei que isto não responde à pergunta da OP, mas a qualquer pessoa aqui do google: XD falhará num ficheiro de trabalho se utilizar aspas.

Mau:

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

Bom:

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

Coloque quantas exclusões quiser, linha após linha, sem utilizar aspas (existam ou não espaços).

A forma como descobri isto foi utilizando o interruptor de linha de comando /SAVE:myjobname que tirou as aspas dos meus directórios citados!

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

A minha solução para isso foi criar ficheiros .txt que contenham os ficheiros ou directórios que pretendo incluir ou excluir. Tenho estes ficheiros numa subpasta “rcXcludes” na minha pasta “Backup”. O meu método para nomear os ficheiros é o seguinte. Prefaço-os com “rc” (para robocopy), depois alguma notação reconhecível para a aplicação ou parte do sistema de ficheiros no comando robocopy, depois anexar “B” ou “R” (para Backup ou Restore), depois “I” ou “X” (para Incluir ou Excluir), depois “D” ou “F” (para Directório ou Ficheiro). Envolvo cada entrada com aspas duplas e um espaço entre as entradas. Um ficheiro “Incluir” pode ter ficheiros ou directórios, mas os directórios devem ter uma barra invertida. Num ficheiro “Excluir” para as directorias não se utiliza uma barra invertida móvel. Quaisquer entradas de directorias são relativas ao caminho de origem no comando robocopy. Todo o conteúdo de qualquer um destes ficheiros .txt tem de estar numa linha e não ter uma linha de retorno carraige. No meu ficheiro batch, utilizo um comando SET /P para importar o ficheiro .txt para uma variável. Utilizo então estas variáveis para FILES ou depois de /XF ou /XD. Por exemplo, para fazer o backup do perfil Chrome do utilizador actual sem copiar toda a pasta “Default”, uso o seguinte.

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"

No ficheiro bat em, digamos, 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"