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

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

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

Quero copiar arquivos entre computadores sem que as datas de "Modificação" e "Criação" sejam alteradas.

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

Portanto, quando uso diffferramentas, 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 é Windows 8.

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

Responder1

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

cp -p

Isso deve preservar os carimbos de data/hora.

Não sei se os carimbos de data e hora podem ser preservados durante o upload para o servidor.

Responder2

Geralmente existem três atributos para arquivo/pasta. Tempos de criação, modificação e 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 Linux). Se este 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 quiser preservar estritamente todos os atributos, você pode usar os seguintes métodos.

cpcom a opção -atambém conhecida --archivecomo --preserve=all
ou
rsynccom -t.

Esses comandos estão disponíveis no Linux por padrão (também podem ser baixados 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 atributos, para copiar os dados.

Responder3

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

Outra maneira seria criar um repositório git em uma máquina e copiar fontes de outro computador, sobrescrevendo os arquivos do repositório git ou apenas adicioná-los a um novo branch e depois usaridiotaé mesclar. Para Windows, eu prefiroCliente Tortoise Gitpor fazer todo o trabalho básico de versionamento.

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

Responder4

Entre os dois computadores Linux você pode usarsincronizar novamente, ele manterá os carimbos de data e hora como estão.
Para Windows você pode usarrobocópiapara copiar os arquivos sem alterar os carimbos de data e hora, talvez você possa usá-lo para copiar os arquivos de um servidor FTP em sua caixa Linux para o Windows.

informação relacionada