Existe uma maneira de xcopy mudar apenas ou novos arquivos?


57

Estou tentando implantar um site da área de trabalho no servidor da web e, agora, estou fazendo o seguinte:

 xcopy C:\source X:\destination /s

Minha área de trabalho é uma máquina com Windows XP e preciso copiar para uma máquina com Windows Server 2008, mas isso copia tudo e todo o site é muito grande e leva muito tempo para concluir a cópia.

Existe uma maneira de copiar apenas arquivos novos ou atualizados? Vejo que você pode passar uma data alterada desde, mas queria ver se há uma maneira mais simples de comparar com o arquivo de destino ...

Além disso, estou aberto a usar qualquer coisa fora do xcopy que possa fazer o trabalho também ...


5
Você também pode tentar o Robocopy.
Joerage

Respostas:


97

Na documentação do XCOPY :

/ d [: mm-dd-aaaa]: copia os arquivos de origem alterados apenas ou após a data especificada. Se você não incluir um valor de mm-dd-aaaa, o xcopy copiará todos os arquivos de origem mais recentes que os arquivos de destino existentes. Esta opção de linha de comando permite atualizar arquivos que foram alterados.

Então, com o seu exemplo, ele deve ler:

xcopy C:\source X:\destination /s /d

2
o "/ d" parece que você precisa dar uma data. Como mencionado na pergunta, não tenho uma data limite em mente. eu só quero para copiar arquivos novos e atualizados
Leora

10
Não, a data é opcional! É por isso que está entre colchetes. Você realmente leu essa linha? Diz que faz exatamente o que você quer que ele faça!
Mark

4
A única coisa a ter cuidado com esta resposta é que o servidor web e sua estação de trabalho estejam configurados para o mesmo tempo! Se os dois não estiverem usando NTP, isso poderá perder arquivos ou copiar mais arquivos do que o necessário.
CarlF 8/07

5
Embora a documentação indique com precisão, é fácil ignorar o /dfato, pois não é tão importante que a data seja opcional, observe as outras opções e pense que não há solução. :-)
Stéphane Gourichon

2
Se um arquivo não existir na pasta de destino, parece que / D sem data especificada copiará, o que pode não ser o resultado desejado.
Tbone 16/05

24

Robocopy também é uma boa alternativa:

Por padrão, o Robocopy copiará um arquivo apenas se a origem e o destino tiverem carimbos de data e hora diferentes ou tamanhos de arquivo diferentes.

Além disso, você pode fazer muito mais - o comando mirror é útil para sites nos quais você também está excluindo arquivos.


Obrigado por mencionar a robocopy - é sempre bom aprender alguns dos novos utilitários disponíveis.
Casper Leon Nielsen

3

Use a opção / A. Todos os arquivos novos ou modificados terão um conjunto de atributos de archive.

Verifique o link abaixo para obter detalhes:

Sintaxe e exemplos de comandos do Xcopy


11
Sim, mas, a menos que você xcopy /M, os arquivos de origem ainda terão o atributo de arquivamento definido depois de copiá-los e serão copiados na próxima vez. Requer acesso de gravação aos arquivos de origem.
Nigel Touch

2

Tenho a seguinte tarefa agendada para ~ 80k arquivos e ~ 2k pastas:

xcopy \\sourceserver\share\ Q:\backuptarget\folder\ /i /d /y /he /C /EXCLUDE:C:\backup\list.txt > C:\backup\backup.log

a opção / C continua a cópia, mesmo que "o acesso seja negado" ao arquivo ou pasta, devido ao fato de estar aberto ou não ter permissão na conta de serviço em que você executa esta tarefa agendada.

o ">" substitui o log toda vez que você deseja anexar, pode usar o pipe ">>".


0

rsync , mas eu não usei no Windows. A maneira como eu normalmente o uso no Linux é:

rsync -avuz src/ remote:dst/

que envia apenas atualizações (arquivos novos e modificados).


-1

O BitTorrent Sync funciona maravilhosamente. Ele será atualizado automaticamente sempre que você alterar um arquivo. Pessoa para pessoa. Atualize vários locais de uma só vez, se necessário. Fácil de usar.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.