Como rsync um diretório para um novo diretório com nome diferente?

35

Eu estou fazendo uma transferência de dados, o antigo sistema de arquivos depende profundamente de um diretório que agora está no caminho diferente. Este é um diretório git que armazena o código online. Não tenho direitos para movê-lo ou renomeá-lo.

Então, o que posso fazer é rsync este diretório para o mesmo caminho antigo. Mas o nome do diretório também mudou.

Existe uma maneira fácil de eu poder rsyncar um diretório para um diretório de destino com um nome diferente?

    
por Zen 08.01.2015 / 05:22

3 respostas

57

Se você quiser usar rsync para tornar recursivamente o diretório dest uma cópia exata do diretório src :

rsync -a src/ dest

A página rsync man explica como isso funciona:

A trailing slash on the source [...] avoid[s] creating an additional directory level at the destination. You can think of a trailing / on a source as meaning "copy the contents of this directory" as opposed to "copy the directory by name" [...]

    
por 08.01.2015 / 09:02
0

Eu acho 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.

    
por 08.01.2015 / 05:28
0

Se os sistemas de arquivos antigo e novo estiverem acessíveis para sua máquina, considere usar um link simbólico em vez de rsync. Se o seu comando rsync que você está usando não especificar hosts (ou se eles forem o mesmo host), então este é o caso. Você está tentando espelhar dois diretórios com um nome diferente no mesmo host. Não use o rsync para isso, pois você está duplicando os dados e terá que executar o seu rsync com frequência para mantê-los sincronizados.

Usar um link simbólico é uma correçã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 aponte para outro diretório.

Digamos que você tenha o antigo git 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 qualquer coisa que seja colocada em new_git também fique instantaneamente disponível da maneira antiga, sem duplicar dados e sem precisar sincronizá-los constantemente.

    
por 08.01.2015 / 15:09

Tags