Como copiar arquivos de um computador para outro sem perder metadados?

1

Semelhante a, mas mais exigente que esta pergunta: Como copiar arquivos sem modificar os tempos de criação de arquivos?

Eu quero copiar arquivos entre computadores sem que as datas "Modificada" e "Criada" sejam afetadas.

O objetivo é comparar diff s de algum código de projeto em 3 computadores diferentes que eu consegui sincronizar quando estava trabalhando neles. Mas trabalhei em apenas uma máquina de cada vez, e agora não me lembro qual era a mais atualizada. É uma bagunça, e eu quero unificar as cópias (e esperançosamente colocá-las sob controle de versão) de uma vez por todas.

Então, quando eu uso as ferramentas diff , saber as datas de modificação dos arquivos pode me ajudar a entender e mesclar as alterações.

2 dos 3 computadores são linux e 1 é o Windows 8.

Quaisquer outras formas de alcançar o que foi mencionado acima, as melhores práticas em tais situações são bem-vindas.

    
por Milind R 29.07.2014 / 10:42

4 respostas

0

No Linux (e em outros sistemas operacionais semelhantes a Unix), você pode copiar arquivos de e para uma unidade flash ou de um servidor SMB / FTP com

cp -p

Isso deve preservar os timestamps.

Não sei se os timestamps podem ser preservados ao fazer o upload para o servidor.

    
por 04.08.2014 / 23:57
1

Geralmente, há três atributos para arquivo / pasta. Criação, modificação e tempos de acesso. Não há muita importância no tempo de acesso. No linux O tempo de criação não é usado (e não é acessível usando procedimentos padrão). Portanto, o único atributo importante é o tempo de modificação. Ao copiar dados com o tempo de modificação da ferramenta do sistema operacional não é alterado (pelo menos para o Linux). Se esse não for o caso, você pode compactar os dados antes da transferência e descompactá-los na outra extremidade. Geralmente, as ferramentas de backup preservam todos os atributos.
Se você quiser preservar estritamente todos os atributos, você pode usar os seguintes métodos.

cp com a opção -a a.k.a --archive ou --preserve = todos os ou rsync com -t .

Estes comandos estão disponíveis no linux por padrão (também baixáveis para windows). Se você não estiver interessado em ferramentas de linha de comando, use uma ferramenta de sincronização que suporte cópia de atributo para copiar os dados.

    
por 04.08.2014 / 19:14
1

Se você não tiver certeza sobre qual é o melhor código nos computadores, acho que é melhor copiar todos os três diretórios de origem em uma máquina e, em seguida, mesclar arquivo por arquivo. Mesclar ferramentas .

Outra maneira seria criar um repositório git em uma máquina, copiar fontes de outro computador, sobrescrever os arquivos do repositório git ou apenas adicioná-los a uma nova ramificação e, em seguida, usar git é a fusão. Para o Windows, eu prefiro o cliente do Tortoise Git para fazer todas as coisas básicas de versão.

Quanto à cópia de metadados, como sugerido por outros, você pode usar rsync -t , cp --preserve=all . Para transferências por FTP, você pode usar scp -p .

    
por 05.08.2014 / 22:46
0

Entre os dois computadores Linux que você pode usar o rsync , ele manterá os carimbos de hora como estão.
Para o Windows, você pode usar o robocopy para copiar os arquivos sem alterar os carimbos de hora, talvez você possa usá-lo para copiar os arquivos de um servidor FTP na sua caixa do Linux para o Windows.

    
por 04.08.2014 / 12:10