Como preservar atributos de arquivo quando se copiam arquivos no Windows?

32

No Linux, podemos simplesmente fazer:

cp -pr directory

Como fazer isso no Windows? Pode ser feito no Windows Explorer? Alguma sugestão de ferramenta GUI?

Seria melhor se eu pudesse manter as permissões NTFS e o tempo de criação / modificação / acesso. No mínimo, preciso preservar a data de modificação dos arquivos e dos diretórios. A cópia do Windows Explorer não preserva a data de modificação dos diretórios.

    
por netvope 27.05.2010 / 23:51

14 respostas

4

Não há uma maneira simples de fazer isso no Windows. Existem programas que afirmam ser capazes de preservar a data de criação dos arquivos.
Veja alguns programas que podem fazer o truque link

Apenas usando o Windows Explorer, não é possível. Se você olhar a documentação para CopyFile ( link ), você verá diz:
Este artigo deve documentar a semântica com relação aos tempos de criação / modificação / acesso de arquivos.

Tempo de criação: se o arquivo de destino já existir, seu tempo de criação será preservado, caso contrário, será definido para a hora atual do sistema.
Hora da última modificação: sempre copiada da hora da modificação do arquivo de origem.
Tempo do último acesso: sempre definido para a hora atual do sistema.

    
por 28.05.2010 / 01:04
19

RoboCopy pode preservar o mtime para diretórios com a opção / DCOPY: T, mas isso só funciona no Vista e mais recente. Também pode preservar as ACLs. Como alternativa, FastCopy pode ser configurado para preservar horários de diretório, ACLs e ADSs .

    
por 01.06.2010 / 22:25
15

... ou você pode criar um arquivo zip (com o método de compactação configurado para apenas "Armazenar") e descompactar os arquivos onde deseja copiá-los. Os atributos de data / hora são os mesmos dos arquivos originais.

    
por 05.03.2012 / 15:33
4

Synchronize It! 3.5 mantém todos os timestamps (arquivos e pastas, modificação e criação). É o único software que eu conheço no Windows XP que faz isso sem falhas, ao lado do Robocopy, e eu tentei muitos. Cuidado, porém, ele pode produzir arquivos corrompidos com arquivos de origem baixados usando software como o FlashGet ou o Orbit Downloader (os arquivos resultantes têm o mesmo tamanho, mas apenas 25kB são realmente copiados - o restante é preenchido com zeros). Eu perguntei ao criador do software se ele poderia descobrir o porquê, mas ele não tinha ideia; Eu acho que tem a ver com o software de baixar arquivos em pequenos pacotes (destinados a otimizar a velocidade) e minha partição de dados sendo extremamente fragmentada.

O Robocopy XP026 está incluído no Windows Vista, mas funciona no Windows XP. Pesquise "Robocopy XP026", ou posso enviar o arquivo aqui porque não é muito fácil de encontrar. Ou você pode instalar a GUI Robocopy e, em seguida, procurar o arquivo robocopy.exe na pasta System32, para usá-lo na linha de comando. O arquivo que eu tenho é 208kB e o número da versão é 5.1.2600.26.

Parece haver um bug com o "modo de backup":

http://msmvps.com/blogs/martinzugec/archive/2008/03/03/ugly-bug-in-robocopy-ignoring-security-on-file-level.aspx

A versão do Robocopy XP027 aparentemente não tem mais esse bug, mas não funciona no Windows XP.

    
por 26.07.2011 / 17:54
3

O RoboCopy deve poder fazê-lo com o interruptor COPYALL. Você pode pegar a versão GUI do Microsoft Technet .

    
por 01.06.2010 / 20:32
2

Ferramenta de linha de comando Robocopy (vem com a maioria das versões do Windows)
Na minha máquina windows 10 está localizada em C:\Windows\System32

De Wikipedia , ele pode ser usado com o seguinte conjunto de opções para preservar o arquivo e timestamps do diretório, bem como outros atributos:

Robocopy C:\some_directory D:\some_directory /DCOPY:T /COPYALL /E /R:0

  • /DCOPY:T preserve original Timestamps dos diretórios (requer versão XP026 ou posterior)
  • /E : Copiar diretórios recursivamente, incluindo diretórios vazios
  • /R:0 : não repete arquivos bloqueados (o valor padrão de novas tentativas em cópias com falha é 1 milhão),

  • /COPYALL : copiar todas as informações do arquivo,
    (equivalente a /COPY:DATSOU , onde

    • D = dados,
    • A = Atributos,
    • T = Timestamps de arquivos ,
    • S = Segurança = ACLs NTFS,
    • O = informações do proprietário,
    • U = informações de auditoria),

Se você apenas deseja preservar data e diretórios, mas não quer subdiretórios vazios copiados e não querem que outros atributos sejam preservados então você pode usar:
Robocopy C:\some_directory D:\some_directory /DCOPY:T /COPY:T /S

onde /S copia subdiretórios não vazios

Para ver a sintaxe completa, digite robocopy /? em um prompt de comando ou dê uma olhada nestes posts: link e link

Um exemplo de um comando que executei recentemente:
Robocopy D:\ C:\D_backup /DCOPY:T /COPYALL /E /R:0 /ZB /ETA /TEE /V /FP /XD D:\$RECYCLE.BIN /XD "D:\System Volume Information" /LOG:C:\D_backup_robocopy.LOG /MIR

Observe como a exclusão de 2 subdiretórios exige que o sinalizador /XD seja usado duas vezes. Além disso, a segunda exclusão de diretório usa aspas porque há espaços no nome do diretório.

Por fim, você pode adicionar o /L flag para testar o comando antes de fazer isso de verdade. Desta forma, você pode verificar que não irá copiar (ou remover) quaisquer diretórios / arquivos que você não queira, e que não há erros em seu comando.

Edit: pegadinha ao copiar de um diretório raiz (drive aka) para uma pasta (diretório não raiz)

Depois de executar o comando de exemplo acima, o diretório não estava visível! (Mesmo que show hidden files e show system files tenham sido verificados no Windows 10!) O comando a seguir, de acordo com o link corrigiu isso:

attrib -h -s C:\D_backup

Como alternativa, adicionar o /A-:SH "desabilita o atributo oculto dos arquivos do sistema", portanto, pode impedir que o diretório fique oculto em primeiro lugar, conforme link . Veja também link .
Este descussion lança mais luz sobre esta opção como solução.

Robocopy D:\ C:\D_backup /A-:SH /DCOPY:T /COPYALL /E /R:0 /ZB /ETA /TEE /V /FP /XD D:\$RECYCLE.BIN /XD "D:\System Volume Information" /LOG:C:\D_backup_robocopy.LOG /MIR

Outro software:

Como alternativa, você pode fazer o download de uma versão GUI do robocopy se não o fizer quer usar a linha de comando.

Outro utilitário do Windows é XCopy , embora esteja incluído no Windows 10, está sendo substituído. Veja o link para as pegadinhas.

A página da Wikipedia para RoboCopy (link no topo deste post) lista outros softwares que podem ser usados.

    
por 26.05.2018 / 21:48
1

É simples mover pastas e diretórios e ainda preservar a Data de Criação. Apenas segure o Shift e arraste a pasta para o novo local (comando de movimento). Data de modificação será a data atual, mas Data de criação manterá a data original.

    
por 14.10.2012 / 16:50
1

FastCopy pode fazer isso e é gratuito.

    
por 06.12.2012 / 03:51
1
xcopy *.* C:\temp\Pics /c /d /e /h /i /k /q /r /s /x /y

Não tenho certeza de qual switch mantém a data do arquivo, mas isso funciona. Então eu fecho o diretório C: \ temp \ Pics que também mantém as datas dos arquivos como mencionado anteriormente.

    
por 19.08.2013 / 21:37
1

Eu descobri que a maneira mais simples para mim até agora é o método "enviar para". sem a necessidade de qualquer aplicação externa. na minha experiência, retém todos os atributos originais do arquivo. o método que eu usei antes era o método de compactação / pasta zip. embora isso certamente demore mais, pois os arquivos não são apenas copiados, mas processados e compactados, tanto na compactação quanto na descompactação.

% appdata% \ Microsoft \ Windows \ SendTo ou C: \ Usuários

por 19.10.2014 / 03:19
0

Maneira simples de mover pastas e preservar a Data de criação & O tempo usa esses utilitários

link

Outro em que pode preservar datas ao copiar arquivos.

link

    
por 11.02.2013 / 14:33
0

xcopy funciona bem para isso. Basta especificar o sinalizador / k para copiar os atributos.

Sintaxe
xcopy Origem [Destino] [Parâmetros opcionais]

O comando xcopy pode copiar um ou mais arquivos ou árvores de diretórios de um local para outro. O comando xcopy está incluído em todas as versões do Windows do Windows 95 para o Windows 8.

    
por 01.01.2014 / 08:59
0

Eu consegui isso com

rsync -avu --modify-window = 3602 source_directory / target_directory /

(isso é realmente usado como uma ferramenta de sincronização de um diretório para outro espelho e a opção timewindow é para evitar problemas quando os sistemas Windows movem clocks 1 hora para horário de verão etc. em comparação com sistemas linux)

em qualquer ambiente cygwin dentro do windows ou uma máquina virtual linux dentro de janelas com drives windows montados (por exemplo, com o virtualbox)

O NB cygwin e o virtualbox são gratuitos e permitem que você tenha uma funcionalidade linux maior ou menor no windows - ambos exigem um pouco de configuração - particularmente o virtualbox, mas tem muitos benefícios ...

Meu problema era que os arquivos tinham o horário correto, mas os diretórios não. O rsync classificou as datas nos diretórios, assim como as datas nos arquivos.

    
por 02.05.2014 / 10:34
0

Este comando copia o mesmo carimbo de hora para arquivos. Note que não faz exatamente o mesmo tempo que as próprias pastas. Observe também que coloquei aspas em torno da origem (Temp1) e do destino (Temp2). Isso é feito no caso de haver espaços nos caminhos. Não tenho espaços, mas achei que deveria incluí-los nos piores cenários possíveis.

robocopy /E /copy:DAT "C:\Temp1" "c:\Temp2"

Para manter os timestamps iguais para as pastas:

robocopy / E / copy: DAT / dcopy: DAT "C: \ Temp1" "c: \ Temp2"

    
por 12.08.2014 / 16:57