O Guia Definitivo para Copiar Arquivos e Pastas Usando Xcopy

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

Neste guia, você aprenderá a usar o Xcopy em vários cenários de cópia de arquivos. Desde copiar um único arquivo, múltiplos diretórios, aplicar 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 PowerShell, e este artigo pressupõe que você já tenha um deles aberto.

Entendendo o Comando Xcopy

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

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

Vantagens

Existem várias vantagens ou benefícios de usar Xcopy que você aprenderá conforme avança neste guia. Mas abaixo estão alguns dos benefícios de usar 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 mais incrível que seja o Xcopy, ele não está isento de limitações. Embora essas limitações possam não ser impeditivas, é bom saber quais são antes de começar.

  • Não pode copiar arquivos abertos.
  • Sem suporte para o Serviço de Cópia de Volume do Windows (VSS). Essa 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 excede 254 caracteres.

Xcopy Referência de Sintaxe

O Xcopy permite que você realize diversas operações de cópia de arquivos e pastas. Mas antes, é necessário entender sua sintaxe e opções. Existem muitas opções que podem alterar o funcionamento do Xcopy. Para ajudar a compreender essas opções, as tabelas a seguir as abordarão em detalhes.

A primeira designação de caminho refere-se ao(s) arquivo(s) de origem; a segunda designação de caminho refere-se ao(s) arquivo(s) de destino.

xcopy [source] [destination] [options]
  • [origem] – Caminho do arquivo(s) a ser copiado (aceita curingas). Você deve especificar a unidade, o caminho e os arquivos que deseja copiar.
  • [destino] – Caminho do novo 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 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 enorme quantidade de arquivos que deseja copiar, talvez para um local de backup, testar primeiro seu comando Xcopy seria ideal. Uma situação em que você gostaria de testar o Xcopy é ao combinar várias opções do Xcopy.

Usando o switch /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 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 durante a cópia. 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, acrescente 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 você 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 as pastas de destino e sobrescreve os 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 somente leitura do arquivo. 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 outra localização, e o arquivo de destino resultante ainda terá um 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 de cópia futuras. 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 Copiar

Suponha que existam vários arquivos na pasta de origem e subpastas que você deseja copiar. O comando Xcopy permite que você insira caracteres curinga como uma forma 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 você pode ver, o arquivo de exclusão pode ter nomes de arquivos específicos, 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 o parâmetro /EXCLUDE. Este comando usa 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 é executado para copiar arquivos, mas pula os arquivos xyz.txt, Exclude.txt, todos os arquivos com extensões .pdf e .png, e todos os arquivos dentro do diretório exclude.

Realizando uma Cópia Diferencial

Quando você precisa fazer backup de arquivos de um local para outro, o Xcopy possui uma opção que permite realizar um backup diferencial. Em vez de copiar todos os arquivos, um backup diferencial copia apenas os arquivos em que a data de modificação é igual ou posterior a uma data especificada pelo parâmetro /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 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 irá copiar apenas os arquivos de origem que forem mais recentes do que os arquivos de destino.

Copiando Arquivos com Base no Atributo de Arquivo

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

Se você criar um script para fazer backup de arquivos usando o Xcopy, você 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 os switches /A e /M. Qual destes switches usar depende se você quer 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 irão reter o atributo de arquivo após a cópia devido ao switch /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 o switch /M em vez disso.

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

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

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 o backup desses arquivos mantendo 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, como 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 configurações de auditoria pode ser útil se sua organização aplicar objetos de política 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 diferentes discos, 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 recursiva de arquivos da pasta C:\Workarea para uma localização de rede. O parâmetro /Z faz o Xcopy rodar 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 Armazenada em Buffer

A E/S armazenada em buffer corresponde à forma como o sistema operacional armazena em buffer 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 armazenada em buffer (ou uma cópia de arquivo bruto) é o método preferido para copiar um arquivo grande.

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 descartado com grandes quantidades de dados de arquivo.

Para copiar arquivos grandes usando E/S não armazenada em buffer, você pode adicionar a opção /J ao comando Xcopy, como 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 se corromper durante a transferência, mesmo que não haja erros visíveis.

Com o Xcopy, você pode usar a opção /V para verificar se os arquivos de origem e destino são idênticos com base em seus tamanhos 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 a opção /V. A opção /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 a opção /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 em compartilhamentos de rede ou volumes que não suportam o Sistema de Arquivos Criptografados (EFS).

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

Copiando Estruturas de Pastas

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

Para fazer isso, execute o comando Xcopy com a opção /T. O uso da opção /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 opção /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

Este erro ocorre normalmente quando o comando inserido contém espaços. Para evitar esse erro, ao digitar um caminho de origem ou destino que contenha espaços, 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 Realizar 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 entrará 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

Este 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 faltando.

Por exemplo, o comando abaixo possui 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 ele recebe.

O shell de comando salvará os códigos de saída na variável %ErrorLevel%. Seu código pode então examinar o valor desta 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 usá-lo para automatizar tarefas com scripts. Abaixo estão alguns exemplos que demonstram como você pode usar o Xcopy em scripts.

Script em Lote Xcopy para Copiar Dados com Tratamento de Erro

Este exemplo de script em lote copia todos os arquivos recursivamente com lógica de tratamento de erro. 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, invoque seu nome no prompt de comando ou PowerShell, seguido pelas pastas de origem e destino.

pycomplete.bat xcopydemo xcopydemofolder
Running an Xcopy batch file

Xcopy Batch Script para Mover Dados

O Xcopy não possui funcionalidade incorporada para mover arquivos e pastas do origem para o destino. No entanto, como solução alternativa, você pode criar um script que primeiro faria o Xcopy dos arquivos e, em seguida, deletaria os arquivos da origem.

O código abaixo copiará os arquivos para o destino. E se o processo de cópia for bem-sucedido, o script excluirá os arquivos da origem. Copie o código abaixo e salve-o 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 em 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 a cópia de arquivos em massa ou a criação de backups de arquivos, o Xcopy é uma excelente ferramenta para facilitar seu trabalho. O Xcopy fornece resultados precisos e rápidos na cópia de arquivos, com muitas opções para personalizar seu comportamento de acordo com seus requisitos.

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