O Guia Definitivo para Copiar Arquivos e Pastas Usando Xcopy

A ferramenta Xcopy, que significa cópia estendida, é uma utilidade popular de linha de comando para copiar grandes quantidades de dados no Windows. Comparado ao comando tradicional copy, o Xcopy possui mais recursos e opções que oferecem melhor controle ao copiar ou mover arquivos e pastas.

Neste guia, você aprenderá como usar o Xcopy para várias situações de cópia de arquivos. Desde a cópia de um único arquivo, múltiplos diretórios, aplicação de filtros ou exclusões, e muito mais. Ao final, você terá adquirido o conhecimento para usar o Xcopy em suas tarefas diárias de cópia de arquivos.

Vamos começar!

Pré-requisitos

Para seguir os exemplos deste guia, você precisará do seguinte.

  • A Windows (server or client) computer. Xcopy comes built-in to Windows, and you don’t need to download anything else. This guide will use Windows 10 Build 1909.
  • O Xcopy funciona no prompt de comando ou no PowerShell, e este artigo assume que você já tem um aberto.

Entendendo o Comando Xcopy

O Xcopy é uma utilidade de linha de comando, que está disponível por padrão desde o Windows 98. Você pode encontrar essa ferramenta na pasta %WINDIR%\system32 com o nome do executável xcopy.exe.

Comparado ao comando copy do Windows, o Xcopy é muito mais eficiente na cópia de arquivos e diretórios. Além disso, o Xcopy possui mais opções que o tornam mais personalizável e permitem controlar o comportamento da cópia de arquivos.

Benefícios

Existem vários benefícios ou vantagens em usar o Xcopy, que você aprenderá à medida que avança neste guia. Mas abaixo estão alguns dos benefícios de usar o Xcopy.

  • Operação de cópia mais rápida em conjuntos grandes de arquivos e diretórios.
  • Simplifica a implantação de aplicativos.
  • Pode replicar a estrutura do diretório de origem conforme está.
  • Copia arquivos mantendo o proprietário e informações de lista de controle de acesso (ACL).
  • Copia e sobrescreve arquivos somente leitura.
  • Pode excluir arquivos com base no nome do arquivo, extensão ou caminho.
  • Pode identificar arquivos atualizados, o que é útil para backups diferenciais.
  • Integração e uso com scripts.

Limitações

Por incrível que pareça, o Xcopy não está isento de limitações. Embora essas limitações possam não ser impeditivas, é bom conhecê-las antes de mergulhar.

  • Não pode copiar arquivos abertos.
  • Sem suporte para o Serviço de Cópia de Sombras de Volume do Windows (VSS). A falta de suporte ao VSS torna o Xcopy inadequado para fazer backup de volumes de sistema operacional ao vivo.
  • Erro de memória insuficiente quando o comprimento do caminho mais o nome do arquivo ultrapassa 254 caracteres.

Xcopy Referência de Sintaxe

O Xcopy permite que você realize várias operações de cópia de arquivos e pastas. Mas antes, você precisará entender sua sintaxe e opções. Existem muitas opções que podem alterar o modo como o Xcopy opera. Para ajudar você a entender essas opções, as tabelas a seguir as cobrirão em detalhes.

A primeira designação de caminho refere-se aos arquivos de origem; a segunda designação de caminho refere-se aos arquivos de destino.

xcopy [source] [destination] [options]
  • [origem] – Caminho para o(s) arquivo(s) a ser(em) copiado(s) (aceita curingas). Você deve especificar a unidade, o caminho e os arquivos que deseja copiar.
  • [destino] – Caminho para o(s) novo(s) arquivo(s). Se você não especificar o caminho de destino, o comando copiará os arquivos para o mesmo caminho da origem.
  • [opções] – Pode ser uma das opções a seguir nas tabelas abaixo. Você também pode visualizar essas opções executando o comando xcopy /? ou visitando a documentação online do Xcopy.

Opções de Origem

Switch Explanation
/A Copy files that have the archive attribute.
/M Copy files with the archive attribute set, then switches off the archive attribute at the destination. Use this option when creating routine backups.
/H Copy hidden and system files and directories. The default value is N.
/D:mm-dd-yyyy Only copies that files with modification date on or after the given date. Without using this option, the command will copy only the files whose date/time is newer than the destination.
/U Only copies the files that already exists at the destination.
/S Copies folders and subfolders recursively excluding the empty one.
/E Copies folders and subfolders recursively including the empty one.
/EXCLUDE:file1[+file2][+file3]… Specify the text file(s) containing a list of strings to match absolute file paths to exclude.

Opções de Destino

Switch Explanation
/I If the destination does not exist, using this option assumes that the destination is a directory and creates it. If you omit this option, the command prompts to confirm if the destination is a directory or a file.
/R Overwrites read-only files.
/T Creates a recursive folder structure at the destination without copying the files. This option does not include copying empty folders. To include empty folders, use this option together with the /E option.
/K Preserves the file attributes during the copy. Otherwise, the command will reset read-only attributes.
/N Copies files using their short file names.
/O Copies files including ownership and access control list (ACL) information.
/X Copies files including file audit settings and ACL information (implies using /O).

Opções de Cópia

Switch Explanation
/W Prompts for a key press before the copy process can start.
/P Prompts (Y/N) before creating each file.
/Y Suppresses the confirmation to overwrite destination file if exists.
/-Y Prompts to confirm overwriting an existing destination file.
/V Verifies that the source and destination file sizes are identical.
/C Ignores errors and forces the command to continue copying.
/B Copies only the symbolic link but not the link target file.
/G Copies encrypted files to a destination that does not support encryption.
/J Copies files without using the buffer. This switch useful when copying very large files.
/Q Suppresses the display of file names while copying.
/F Displays the full source and destination file paths while copying.
/L Only displays which files to copy without copying them. This switch can be useful when testing Xcopy commands with multiple options to assess the expected result.
/Z Copies files in restartable mode. Using this option, the command gracefully stops copying files during network interruption. The copying will resume after re-estabslishing the network connection.

Trabalhando com Xcopy: Exemplos de Uso

Agora que você está familiarizado com a sintaxe e as opções do Xcopy, é hora de começar a usá-lo combinando uma ou mais opções juntas. Você explorará muitos cenários diferentes nas seções seguintes para usar o Xcopy na cópia de arquivos e pastas.

Listando Arquivos para Copiar

Se você tiver um servidor de arquivos contendo uma grande quantidade de arquivos que deseja copiar, talvez para um local de backup, testar primeiro o seu comando Xcopy seria ideal. Uma situação em que você gostaria de testar o Xcopy é quando estiver combinando várias opções do Xcopy.

Usando o interruptor /L com o Xcopy, você pode simular o que teria acontecido quando você emitiu o comando, listando quais arquivos ele copiaria. Dessa forma, você pode confirmar se o seu comando copiará todos os arquivos que você pretendia.

XCOPY C:\Workarea\XCopyDemo C:\Workarea\XCopyDemoFolder /L

Copiando um Único Arquivo

A operação mais básica que você pode fazer com o Xcopy é copiar um arquivo de uma origem para um destino sem usar nenhuma opção. Por exemplo, o comando abaixo copiará um arquivo de texto para um diretório de destino, e o nome do arquivo será o mesmo.

XCOPY C:\Workarea\XCopyDemo\NewFile.txt C:\Workarea\XCopyDemoFolder

Você também pode copiar o arquivo de origem e alterar o nome do arquivo de destino executando o comando abaixo.

XCOPY C:\Workarea\XCopyDemo\NewFile.txt C:\Workarea\XCopyDemoFolder\AnotherFile.txt

Copiando Arquivos para uma Nova Pasta

Com o Xcopy, você pode copiar arquivos e criar o diretório de destino na hora. Para fazer isso, você precisa adicionar a opção /I ao comando Xcopy.

Por exemplo, o comando abaixo copia os arquivos da pasta C:\Workarea\Demo para a pasta D:\Workarea. Se a pasta de destino não existir, o Xcopy cria a pasta de destino usando a opção /I.

XCOPY C:\Workarea\Demo D:\Workarea /I

Copiando Todos os Arquivos e Pastas Recursivamente

Além de copiar arquivos de uma pasta para outra, o Xcopy também permite copiar pastas e arquivos recursivamente. E existem duas maneiras de fazer uma cópia recursiva – com e sem pastas vazias.

Para copiar todos os arquivos e diretórios, ignorando os diretórios vazios, adicione a opção /S ao final do comando Xcopy, conforme mostrado abaixo.

XCOPY C: D: /S

Por outro lado, para incluir diretórios vazios durante a cópia recursiva, adicione a opção /E ao comando.

XCOPY C: D: /E

Incluindo Arquivos Ocultos e de Sistema

Por padrão, o Xcopy não inclui arquivos ocultos e de sistema em operações de cópia. Mas se precisar forçar o Xcopy a incluir esses arquivos, adicione a opção /H ao comando.

O comando abaixo copia todos os arquivos recursivamente, incluindo arquivos ocultos e de sistema. Este comando também ignora erros, cria os diretórios de destino e sobrescreve arquivos existentes.

XCOPY C:\Workarea\Documents D:\Workarea\Documents /S /H /C /Y

Preservando o Atributo de Arquivo Somente Leitura

Outro atributo que o Xcopy pode manipular e preservar é o atributo de arquivo somente leitura. Por padrão, quando o Xcopy copia um arquivo somente leitura, ele remove esse atributo no destino. Para evitar que o Xcopy remova o atributo de somente leitura, adicione a opção /K ao comando.

Por exemplo, o comando abaixo copia um arquivo somente leitura para outro local, e o arquivo resultante no destino ainda terá o atributo de somente leitura. Este comando também sobrescreverá o arquivo de destino se ele existir.

XCOPY C:\Workarea\XCopyDemo\NewFile.txt D:\Workarea /I /K /Y

Como efeito colateral de preservar o arquivo como somente leitura, o Xcopy não pode sobrescrever o mesmo arquivo em operações futuras de cópia. No entanto, você pode forçar o Xcopy a sobrescrever arquivos somente leitura adicionando a opção /R.

XCOPY C:\Workarea\XCopyDemo\NewFile.txt D:\Workarea /K /R /Y

Filtrando Arquivos para Cópia

Suponha que existam vários arquivos na pasta de origem e em subpastas que você deseja copiar. O Xcopy permite que você insira caracteres curinga como uma maneira de filtrar quais arquivos copiar.

Por exemplo, o comando abaixo copia apenas os arquivos com a extensão .cs recursivamente a partir da raiz da unidade C: para a raiz da unidade E:. Este comando também ignora erros e sobrescreve arquivos existentes sem solicitar confirmação.

XCOPY C:\*.cs E:\ /S /C /Y

Excluindo Arquivos e Pastas da Cópia

A powerful feature of Xcopy is its ability to exclude files from the copy process. To use this feature, you can leverage the /EXCLUDE switch. This switch accepts the names of the file(s) that contain the exclusion lists.

Primeiro, você precisa criar ou ter um arquivo contendo a lista de exclusão. Por exemplo, você pode ter um arquivo de texto chamado Exclude.txt que contém as seguintes entradas. Como pode ver, o arquivo de exclusão pode ter nomes específicos de arquivos, extensões de arquivo e pastas como entradas.

xyz.txt
Exclude.txt
.pdf
.png
\exclude\

Para executar o Xcopy com exclusões, execute o comando abaixo e especifique o caminho completo do arquivo de exclusão para a opção /EXCLUDE. Este comando utiliza o arquivo C:\Workarea\XCopyDemo\Exclude.txt.

XCOPY C:\Workarea\XCopyDemo C:\Workarea\Backup /S /Y /Exclude:C:\Workarea\XCopyDemo\Exclude.txt

O resultado? O Xcopy executa a cópia de arquivos, mas ignora o xyz.txt, Exclude.txt, todos os arquivos com a extensão .pdf e .png, e todos os arquivos sob o diretório exclude.

Realizando uma Cópia Diferencial

Quando você precisa fazer backup de arquivos de um local para outro, o Xcopy tem uma opção que permite realizar um backup diferencial. Em vez de copiar todos os arquivos, um backup diferencial apenas copia os arquivos em que a data de modificação é igual ou posterior a uma data que você especifica para a opção /D:m-d-y.

Por exemplo, para copiar apenas os arquivos com a data de modificação em ou após 01 de abril de 2021, execute o comando abaixo. Além disso, este comando realiza uma cópia recursiva, ignora erros e sobrescreve os arquivos existentes no destino.

XCOPY C:\Workarea\XCopyDemo C:\Workarea\Backup /D:04-01-2021 /S /C /Y

Se você não especificar uma data com a opção /D, o Xcopy copiará apenas os arquivos de origem que forem mais novos que os arquivos de destino.

Copiando Arquivos Com Base no Atributo de Arquivo

Geralmente, programas de backup removem o atributo de arquivo de um arquivo após uma operação de backup. Após modificar um arquivo (ou seja, editar e salvar), o Windows redefine automaticamente o atributo de arquivo dos arquivos.

Se você criar um script para fazer backup de arquivos usando o Xcopy, pode usar o atributo de arquivo para determinar se deve copiar ou fazer backup do arquivo.

Para copiar arquivos com o atributo de arquivo, você pode aproveitar as chaves /A e /M. Qual chave usar depende se você deseja preservar o atributo de arquivo do arquivo ou não.

O comando a seguir realiza uma cópia recursiva de arquivos com o atributo de arquivo apenas. Os arquivos de destino manterão o atributo de arquivo após a cópia devido à chave /A.

XCOPY C:\Workarea\Demo D:\Workarea\Test /A /S /Y

Em contraste, para remover o atributo de arquivo do arquivo de origem após a cópia para o destino, especifique a chave /M em vez disso.

XCOPY C:\Workarea\Demo D:\Workarea\Test /M /S /Y

Retendo Informações do Proprietário e ACL do Arquivo

Imagine criar um backup de uma pasta de perfil inteira. Cada arquivo pode ter proprietários diferentes ou permissões únicas. Se precisar restaurar esses arquivos, você gostaria que os mesmos proprietários e permissões permanecessem intactos.

Dessa forma, todo o processo pareceria sem interrupções, e os usuários ainda teriam o mesmo acesso aos arquivos que tinham antes. Mas primeiro, você precisa garantir que está fazendo backup desses arquivos enquanto mantém os proprietários e o acesso existentes.

Para copiar arquivos e manter as informações de proprietário e ACL, adicione o parâmetro /O ao comando xcopy, conforme mostrado abaixo.

XCOPY C:\Workarea D:\Work /O /I /Y

Além de manter as informações de proprietário e ACL, você também pode incluir as configurações de auditoria dos arquivos. Copiar as configurações de auditoria pode ser útil se sua organização aplicar objetos de diretiva de grupo (GPO) para auditar arquivos.

Para incluir as configurações de auditoria de arquivos ao copiar arquivos com Xcopy, use o comando /X. O comando /X implica também o comando /O, então você não precisa usar ambos os comandos ao mesmo tempo.

XCOPY C:\Workarea D:\Work /X /I /Y

Copiando Arquivos e Pastas Pela Rede

Não apenas o Xcopy pode copiar arquivos entre locais no mesmo ou em discos diferentes, mas também pode copiar arquivos pela rede. Infelizmente, a cópia de arquivos pela rede nem sempre é confiável. As conexões de rede podem sofrer interrupções curtas e, em alguns casos, perda total de conexão.

Felizmente, você pode executar o Xcopy no modo reiniciável. Isso significa que, mesmo se o progresso da cópia parar devido a um erro de rede, a cópia pode ser retomada após restabelecer a conexão de rede. Para executar o Xcopy no modo reiniciável, você precisará adicionar a opção /Z ao comando.

Por exemplo, o comando abaixo realiza uma cópia de arquivos recursiva da pasta C:\Área de Trabalho para uma localização de rede. O parâmetro /Z faz com que o Xcopy funcione no modo reiniciável.

XCOPY C:\Workarea "\\SERVER01\Backup" /S /Z

Ao usar a opção /Z, o Xcopy também exibe o progresso da cópia de arquivos em porcentagem.

Copiando Arquivos Usando E/S Não Bufferizada

A E/S bufferizada corresponde a como o sistema operacional armazena em buffer as leituras e gravações de disco no cache do sistema de arquivos. Embora o armazenamento em buffer acelere leituras e gravações subsequentes no mesmo arquivo, isso tem um custo. Como resultado, a E/S não bufferizada (ou uma cópia de arquivo bruto) é o método preferido para copiar arquivos grandes.

Este método de cópia reduz a sobrecarga do cache do sistema de arquivos e impede que o cache do sistema de arquivos seja facilmente limpo com grandes quantidades de dados de arquivo.

Para copiar arquivos grandes usando E/S não armazenada em buffer, você pode adicionar o comando /J ao comando Xcopy, conforme mostrado abaixo.

XCOPY C:\Workarea\abc.mp4 D:\Temp /I /J

Copiando Arquivos com Verificação

Assim como em outras tarefas, a cópia de arquivos nem sempre retorna resultados 100% bem-sucedidos. Alguns arquivos podem ser corrompidos durante a transferência, mesmo que não haja erros visíveis.

Com o Xcopy, você pode usar o comando /V para verificar se os arquivos de origem e destino são idênticos com base no tamanho deles após a cópia. Arquivos de origem e destino idênticos indicam que a cópia foi bem-sucedida e que o arquivo está íntegro.

O comando abaixo copia todos os arquivos de C:\Workarea\XCopyDemo para C:\Workarea\Backup e verifica cada arquivo usando o comando /V. O comando /F exibe o caminho completo dos arquivos de origem e destino.

XCOPY C:\Workarea\XCopyDemo C:\Workarea\Backup /F /H /S /X /V

Copiando Arquivos Criptografados

O Xcopy também suporta a cópia de arquivos criptografados para destinos que não suportam criptografia. Usando o comando /G, o Xcopy copia os arquivos de origem criptografados e cria arquivos de destino descriptografados.

Este modo de cópia é útil, especialmente ao fazer backup de arquivos criptografados para compartilhamentos de rede ou volumes não criptografados do Sistema de Arquivos com Criptografia (EFS).

Xcopy C:\Workarea\XCOPYDemo C:\Workarea\XCOPYDemoFolder /S /G

Copiando Estruturas de Pasta

Em algumas situações, scripts ou programas de backup podem exigir que você pré-provisione o destino antes de copiar os arquivos da origem. Quando necessário, você pode usar o Xcopy para replicar a estrutura da pasta de origem sem o conteúdo.

Para fazer isso, execute o comando Xcopy com a chave /T. Usar a chave /T fará com que o Xcopy copie apenas a estrutura da árvore de diretórios para o destino, mas ignora os diretórios vazios.

Você também pode adicionar a chave /E ao comando para incluir diretórios vazios, como mostrado no exemplo de comando abaixo.

Xcopy C:\Workarea\XCOPYDemo C:\Workarea\XCOPYDemoFolder /T /E

Erros Comuns

Se algo pode dar errado, provavelmente dará. O mesmo acontece ao copiar arquivos, independentemente do volume. Abaixo estão os erros comuns do Xcopy que você pode encontrar.

Número Inválido de Parâmetros

Esse erro ocorre geralmente quando o comando inserido contém caracteres de espaço. Para evitar esse erro, ao digitar um caminho de origem ou destino que contenha caracteres de espaço, você deve cercar o caminho com aspas duplas.

Por exemplo, se o caminho for C:\Documents and Settings, insira o caminho como “C:\Documents and Settings”.

Não é Possível Executar uma Cópia Cíclica

Esse erro ocorre se o diretório de origem que você está copiando também incluir o diretório de destino. Nesse caso, o Xcopy entraria em um loop, causando um erro. Ao usar o Xcopy, o destino deve ser um diretório ou disco totalmente independente se você copiar todos os diretórios e subdiretórios.

Erro de Análise

Esse erro ocorre quando você digitou uma sintaxe errada ou inválida no comando. Por exemplo, você pode encontrar esse erro quando especificou o caminho entre aspas, mas as aspas de fechamento estão ausentes.

Por exemplo, o comando abaixo tem um caractere de aspas duplas de fechamento ausente no caminho de destino.

Xcopy C:\Workarea "C:\Workarea\XCopy Demo /S /I /E /Y

Códigos de Saída

O Xcopy retorna um código de saída para uma operação, que você pode usar para determinar se a operação foi bem-sucedida. Os códigos de saída são úteis, especialmente se sua tarefa ou script realiza ações com base no código de saída que recebe.

O prompt de comando salvará os códigos de saída na variável %ErrorLevel%. Seu código pode então examinar o valor dessa variável para determinar o resultado da operação Xcopy.

Abaixo está uma tabela que lista todos os códigos de saída do Xcopy.

Exit Code Purpose
0 This exit code means that there were no errors.
1 This exit code means that Xcopy did not find any files to copy.
2 This exit code means that the Xcopy was terminated by pressing CTRL+C.
4 This exit code means that an initialization error happened either because of insufficient memory or disk space or because you’ve entered invalid syntax.
5 This exit code means that there was a disk write error.

Scripting com Xcopy

Além de usar o Xcopy interativamente, você pode aproveitar seus benefícios melhor se o usar para automatizar tarefas com scripts. Abaixo estão alguns exemplos que demonstram como você pode usar o Xcopy em scripts.

Script em Lote do Xcopy para Copiar Dados com Tratamento de Erros

Este script em lote de exemplo copia todos os arquivos recursivamente com lógica de tratamento de erros. E com base no erro ou código de saída, o script retorna uma mensagem mostrando o motivo do erro.

Para criar o arquivo em lote, abra um editor de texto ou código de sua escolha, copie o código abaixo, cole-o em seu editor e salve o arquivo como copycomplete.bat.

@echo off
rem This batch file copies all source
rem files in all directories and sub-directories from the source
rem path (%1) to the destination path (%2)

xcopy %1 %2 /s /e

if errorlevel 4 goto lowmemory
if errorlevel 2 goto abort
if errorlevel 0 goto exit

:lowmemory
echo Insufficient memory to copy files or
echo invalid drive or command-line syntax.
goto exit

:abort
echo You pressed CTRL+C keys due to which the copy operation has been aborted.
goto exit

:exit

Em seguida, para executar o script, chame-o no prompt de comando ou PowerShell, seguido pelas pastas de origem e destino.

pycomplete.bat xcopydemo xcopydemofolder
Running an Xcopy batch file

Script de lote Xcopy para mover dados

O Xcopy não possui funcionalidade integrada para mover arquivos e pastas da origem para o destino. No entanto, como solução alternativa, você pode criar um script que Xcopy os arquivos primeiro e então exclua os arquivos da origem.

O código abaixo irá copiar os arquivos para o destino. E se o processo de cópia for bem-sucedido, o script irá excluir os arquivos na origem. Copie o código abaixo e salve em um novo arquivo chamado movefiles.bat.

Rem Batch file to move files

Xcopy /D /V %1 %2

Rem If the Xcopy process is successful (0), then delete the files at the source.
if errorlevel 0 (
echo Xcopy process completed successfully
del /Q %1
exit /B
)

Rem Errorlevel is not 0
echo The copy process has failed.

Em seguida, para executar o arquivo de lote movefiles.bat, invoque seu nome no prompt de comando ou PowerShell seguido pelos caminhos de origem e destino, como fez no exemplo anterior.

movefiles.bat xcopydemo xcopydemofolder

Conclusão

Se o seu trabalho envolve copiar arquivos em massa ou criar backups de arquivos, o Xcopy é uma excelente ferramenta para ajudar a facilitar seu trabalho. O Xcopy fornece resultados de cópia de arquivo precisos e rápidos, com muitas opções para personalizar seu comportamento de acordo com seus requisitos.

Source:
https://adamtheautomator.com/xcopy/