2010-05-27 21:51:36 +0000 2010-05-27 21:51:36 +0000
43
43
Advertisement

Como preservar os atributos dos ficheiros quando se copia ficheiros no Windows?

Advertisement

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 o melhor se conseguisse manter as permissões NTFS e o tempo de criação/modificação/acesso. No mínimo, preciso de preservar a data de modificação dos ficheiros e dos directórios. A cópia do Windows Explorer não preserva a data de modificação para os directórios.

Advertisement
Advertisement

Respostas (14)

23
23
23
2010-06-01 20:25:56 +0000

RoboCopy pode preservar o mtime para directórios com a /DCOPY:T switch, mas isto só funciona em Vista e mais recentes. Pode também preservar ACLs. Alternativamente, FastCopy pode ser configurado para preservar mtimes de directórios, ACLs, e ADSes .

21
21
21
2012-03-05 14:33:18 +0000

… ou pode simplesmente fazer um arquivo zip (com o método de compressão definido para apenas “Armazenar”), e depois desembalar os ficheiros onde os queria copiar. Os atributos de data/hora são os mesmos que os ficheiros originais.

10
Advertisement
10
10
2018-05-26 19:48:07 +0000
Advertisement

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

De Wikipedia , pode ser usada com o seguinte conjunto de opções para preservar o ficheiro e directório de timestamps, bem como outros atributos:

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

  • /DCOPY:T preservar original Carimbos temporais dos directórios (requer a versão XP026 ou posterior)
  • /E: Copiar directórios recursivamente, incluindo Directórios vazios
  • /R:0: não repetir ficheiros bloqueados (o número de tentativas em cópias falhadas é de 1 milhão por defeito),

  • /COPYALL: Copiar todas as informações do ficheiro, (equivalente a /COPY:DATSOU, em que

& se apenas quiser preservar os carimbos de data e hora do directório, mas se não quiser subdirectórios vazios copiados e se não quiser outros atributos preservados, então pode utilizar:
Robocopy C:\some_directory D:\some_directory /DCOPY:T /COPY:T /S

onde /S copia non-empty subdirectórios

Para ver a sintaxe completa, escreva robocopy /? num prompt de comando, ou dê uma vista de olhos nestes posts do blog: https://ss64.com/nt/robocopy.html an https://techjourney.net/robocopy-syntax-command-line-switches-and-examples/

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

Note como a exclusão de 2 subdirectórios exige que a bandeira /XD seja usada duas vezes. Além disso, a segunda exclusão de directório utiliza citações porque existem espaços no nome do directório.

Finalmente, pode adicionar a bandeira /L para testar o comando antes de o fazer de verdade. Desta forma, pode verificar que não copia (ou remove) quaisquer directórios/ficheiros que não queira, e que não existem erros no seu comando.

Editar: obteve-o quando copiou de um Directório Raiz (aka drive) para uma Pasta (directório não-raiz)

Depois de executar o comando de exemplo acima, o directório não estava visível! (Apesar de show hidden files e show system files terem sido verificados no Windows 10!) O seguinte comando de acordo com https://serverfault.com/a/455029/399723 corrigiu isto:

attrib -h -s C:\D_backup

Em alternativa, adicionando o /A-:SH “unsets the Hidden Attribute from System files”, pode assim evitar que o directório fique escondido em primeiro lugar, de acordo com https://serverfault.com/a/565804/399723 . Ver também https://ss64.com/nt/robocopy.html .
Esta descrição lança mais luz sobre esta opção como uma 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:

Em alternativa, pode descarregar uma versão GUI do robocopy se não quiser utilizar a linha de comando.

Outro utilitário do windows é XCopy , embora esteja incluído no windows 10, está a ser depreciado. Ver o link para gotchas.

A página da Wikipedia para RoboCopy (ligada no topo deste post) lista outros programas que podem ser utilizados.

6
6
6
2010-05-27 23:04:39 +0000

Não há uma forma simples de o fazer em Windows.  Há vários programas que afirmam ser capazes de preservar as datas de criação dos ficheiros.
Aqui estão alguns programas que podem fazer o truque http://forum.soft32.com/windows/preserve-creation-date-Copy-ftopict361820.html (Ligação quebrada; não na Wayback Machine).

Usando apenas o Windows Explorer, não é possível. Se olhar para a documentação do CopyFile Função CopyFile (winbase.h) , verá que evita o assunto.  Mas&nbsp Função CopyFile (Windows Developer Preview) (a 2012 arquivo do mesmo URL) diz:

Arquivo vezes semântica & > & > Este artigo deve documentar semântica no que diz respeito à criação/modificação/tempo de acesso ao ficheiro.

& > Tempo de criação: se o ficheiro alvo já existir, o seu’ tempo de criação é preservado , caso contrário it is definido para a hora actual do sistema.
& > Hora da última modificação: sempre copiada da hora de modificação do ficheiro fonte.
& > Hora do último acesso: sempre definida para a hora actual do sistema.

4
Advertisement
4
4
2011-07-26 15:54:51 +0000
Advertisement

Sincronizar! 3.5 mantém todos os carimbos temporais (ficheiros e pastas, modificação e criação). É o único software que conheço no Windows XP que faz isso impecavelmente, ao lado do Robocopy, e já experimentei muitos. Cuidado, porém, pode produzir ficheiros corrompidos com ficheiros de origem descarregados utilizando software como o FlashGet ou o Orbit Downloader (os ficheiros resultantes têm o mesmo tamanho mas apenas 25kB são realmente copiados - o resto é preenchido com zeros). Perguntei ao criador do software se conseguia perceber porquê, mas ele não fazia ideia; acho que tem a ver com o facto de tal software descarregar ficheiros em pequenos pacotes (com o objectivo de optimizar a velocidade) e a minha partição de dados estar enormemente fragmentada.

Robocopy XP026 está de facto incluído no Windows Vista, mas funciona no Windows XP. Procure “Robocopy XP026”, ou posso enviar o ficheiro aqui, pois não é muito fácil de encontrar. Ou pode instalar o Robocopy GUI e depois procurar o ficheiro robocopy.exe na pasta System32, de modo a utilizá-lo a partir da linha de comando. O ficheiro que tenho é 208kB e o número da versão é 5.1.2600.26.

Parece haver um bug com o “modo de backup”, no entanto:

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

Robocopy versão XP027 aparentemente já não tem este bug mas não funciona no Windows XP.

3
3
3
2010-06-01 18:32:19 +0000

RoboCopy deve ser capaz de o fazer com o interruptor COPYALL. Pode obter a versão GUI em Microsoft Technet .

1
Advertisement
1
1
2014-10-19 01:19:44 +0000
Advertisement

A maneira mais simples para mim, até agora, é o método “enviar para”. Não precisa de quaisquer aplicações externas. Na minha experiência, retém todos os atributos do ficheiro original.

O método que utilizei antes, era o método de compressão/zip folder. Embora isto demore certamente mais tempo, uma vez que os ficheiros não são apenas copiados, mas processados e comprimidos, tanto na compressão como na descompressão.

%appdata%\Microsoft\Windows\SendTo ou. C:\Users\ _______ \AppData\Roaming\Microsoft\Windows\SendTo

Adicione um atalho à pasta onde os quer copiar, e o item aparecerá no seu menu sendto quando clicar com o botão direito do rato sobre um ficheiro que queira copiar.

1
1
1
2012-12-06 02:51:42 +0000

FastCopy ](http://ipmsg.org/tools/fastcopy.html.en) pode fazer isto e é grátis.

1
Advertisement
1
1
2013-08-19 19:37:45 +0000
Advertisement
xcopy *.* C:\temp\Pics /c /d /e /h /i /k /q /r /s /x /y

Não tenho a certeza qual interruptor mantém a data do ficheiro, mas isto funciona. Depois fecho o directório de fotos C:\temp que também mantém a data do ficheiro, como mencionado anteriormente.

0
0
0
2012-10-14 14:50:02 +0000

É simples mover pastas e directórios e ainda preservar a Data de Criação. Basta segurar Shift e arrastar a pasta para o novo local (comando mover). Data Modificada será a data actual mas a Data Criada manterá a data original.

0
0
0
2014-05-02 08:34:44 +0000

Consigo isto com

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

(isto é realmente usado como uma ferramenta de sincronização de um directório para outro espelho e a opção de janela de tempo é para evitar problemas quando os sistemas de janelas movem relógios de 1 hora para poupar luz do dia, etc. em qualquer ambiente cygwin dentro de janelas ou uma máquina virtual linux dentro de janelas com unidades de janelas montadas (por exemplo com caixa virtual)

NB cygwin e caixa virtual são ambas gratuitas e permitem ter, em menor ou maior grau, funcionalidades linux em janelas - ambas requerem um pouco de configuração - particularmente a caixa virtual, mas têm muitos benefícios….

O meu próprio problema foi que os ficheiros têm a hora correcta mas os directórios não. rsync ordenou as datas nos directórios assim como as datas nos ficheiros.

0
0
0
2014-01-01 07:59:10 +0000

O xcopy funciona bem para isto. Basta especificar a bandeira /k para copiar atributos.

Sintax xcopy Fonte [Destino] [Parâmetros opcionais]

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

0
0
0
2014-08-12 14:57:58 +0000

Este comando copia o mesmo carimbo de tempo para ficheiros. Note-se que não faz exactamente o mesmo carimbo de tempo para as pastas propriamente ditas. Note-se também que coloquei aspas em torno da fonte (Temp1) e do destino (Temp2). Isto é feito para o caso de haver espaços nos caminhos. Não tenho quaisquer espaços, mas achei que deveria incluí-los para os piores cenários.

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

Para manter os carimbos temporais o mesmo também para pastas:

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

0
0
0
2013-02-11 13:33:03 +0000

Forma simples de mover pastas e preservar a Data e a Hora de Criação utilizar estas utilidades http://lantechsoft.com/data-copy.html

Outra onde pode preservar datas enquanto copia ficheiros. http://technocomsolutions.com/data-copy-tool.html

Advertisement

Questões relacionadas

3
19
10
28
9
Advertisement