
Estou fazendo uma transferência de dados, o antigo sistema de arquivos depende profundamente de um diretório que agora está em um caminho diferente. Este é um diretório git que armazena código online. Não tenho direitos para movê-lo ou renomeá-lo.
Então, o que posso fazer é sincronizar novamente esse diretório com o mesmo caminho antigo. Mas o nome do diretório também mudou.
Existe uma maneira fácil de sincronizar novamente um diretório para um diretório de destino com um nome diferente?
Responder1
Se você quiser usar rsync
para tornar o dest
diretório recursivamente uma cópia exata do src
diretório:
rsync -a src/ dest
A rsync
página do manual explica como isso funciona:
Uma barra final na origem [...] evita a criação de um nível de diretório adicional no destino. Você pode pensar no final
/
de uma fonte como significando "copiar o conteúdo deste diretório" em vez de "copiar o diretório pelo nome" [...]
Responder2
Responder3
Se os sistemas de arquivos antigo e novo estiverem acessíveis em sua máquina, considere usar um link simbólico em vez de rsync. Se o comando rsync que você está usando não especifica hosts (ou se eles são o mesmo host), então este é o caso. Você está tentando espelhar dois diretórios com nomes diferentes no mesmo host. Não use o rsync para isso, pois você está duplicando os dados e terá que executar o rsync com frequência para mantê-los sincronizados.
Usar um link simbólico é uma solução única que espelhará dois diretórios (com nomes diferentes) e quase não requer espaço. É como criar um diretório de alias que aponta para outro diretório.
Digamos que você tivesse o git antigo em um diretório chamado /old/path/old_git e agora o repositório de código foi movido para /new/path/new_git
Você pode fazer:
cd /old/path
rm -rf old_git (if you still have it there, get rid of it, or move it out of the way)
ln -s /new/path/new_git old_git
Isso criará um link como tal:
/old/path/old_git -> /new/path/new_git
Para que tudo o que for colocado em new_git também esteja disponível instantaneamente da maneira antiga, sem duplicar dados e sem precisar sincronizá-los constantemente.
Responder4
Encontro uma solução alternativa agora.
Usar rysnc -r /origin/* /target/
pode sincronizar todo o conteúdo do diretório de origem para o diretório de destino.