usando xcopy ou cópia para fazer backup de arquivos?

2

Eu tenho uma unidade local que contém um diretório por usuário:

c: \ user1 \
c: \ user2 \
c: \ user3 \

e eu tenho uma unidade remota (por meio de um compartilhamento) que contém a mesma árvore de diretórios:

f: \ user1 \
f: \ user2 \
f: \ user3 \

dentro de cada diretório pode ser qualquer número de arquivos, mas eles são todos .txt. Eu tenho tentado criar um arquivo de lote que pode iterar nos diretórios locais e copiar arquivos mais novos que o timestamp X no diretório correspondente em f:.

Existe alguma maneira de conseguir isso usando xcopy ou copiar mais alguns lotes de mágica?

obrigado!

EDIT: para evitar confusão: eu preciso analisar os diretórios de usuários (pode ter qualquer nome), pegue os arquivos mais recentes que os copiados na última vez e copie-os para o diretório com o mesmo nome em F: \

copy . não é o que eu estou tentando fazer. mais como:

for /f "tokens=*" %%a IN ('dir /b c:\users\*') do call dobackup.bat "%%a"

ou similar

    
por Mr Aleph 03.08.2010 / 18:06

2 respostas

4

Robocopy é sua amiga nisso. Tem uma bandeira que fará exatamente o que você quer.

robocopy c:\ f:\ /mir /r:1 /sec

Isso fará uma cópia espelhada, repetindo os arquivos abertos uma vez antes de prosseguir e também copiará a segurança. A cópia espelhada também removerá arquivos de F: \ que não existem mais em C: \, o que é algo que o xcopy não pode fazer. Além disso, após a primeira sincronização, copiará apenas arquivos mais recentes.

Se o robocopy não for uma possibilidade por algum motivo, você pode se aproximar do xcopy.

xcopy C:\*.* F:\*.* /S/E/H/D

Isso copiará toda a estrutura C: \ para F: \, copiará os arquivos ocultos e somente copiará os mais novos. Não irá remover arquivos de F: \ que existem em C: \ embora.

Editar:

Talvez isso faça o que você quer:

 for /D %D in (C:\User*\) do xcopy  C:\User%D\*.* F:\User%D /s /e /d 08-01-2010

Isso itera todos os diretórios com o Usuário neles e copia arquivos mais novos que o primeiro de agosto.

    
por 03.08.2010 / 18:12
1

OK, se eu colocar o arquivo em lote em C: \ users \, então

for /D %%a IN (*) do call robocopy %%a\ f:\%%a\ *.txt /mir /r:1 /sec

funciona

    
por 03.08.2010 / 20:28