Isso não precisa ser feito rsync
, mas seria bom não ter que escrever um script para fazer isso e rsync
está muito próximo do que eu quero.
rsync -a
(ou -l
) pode preservar links simbólicos e -L
pode desreferenciar links simbólicos e copiá-los como se fosse um arquivo / diretório normal. No entanto, é possível manter o link simbólico e também copiar os arquivos / diretórios para os quais os links apontam?
Aqui está um exemplo. Digamos que temos esta hierarquia de pastas:
dirA/link_to_file -> ../dirB/file
dirA/link_to_dir -> ../dirC
dirB/file
dirB/not_this_file
dirC/file
dirC/file2
dirD/others
e quando eu fizer rsync -aR dirA dest
(ou qualquer outra coisa), gostaria que elas aparecessem exatamente em dest
:
dirA/link_to_file -> ../dirB/file
dirA/link_to_dir -> ../dirC
dirB/file
dirC/file
dirC/file2
Isso é possível com rsync
? Obrigado.
Vamos supor que links simbólicos com caminho absoluto ou apontar para fora do diretório de origem possam ser ignorados.
dirA/link
for um link simbólico../dirB/file
, isso deve ser tratado como cópiadirB/file
paradest/dirB/file
edirA/link
paradest/dirA/link
. E sedirA/link
for um link para../../another_file
? O que acontece, em geral, sedirA/link
aponta para um diretório mais alto na árvore de diretórios?a -> b
,b -> c/foo
,c -> d/e
: um pedido de cópiaa
também deve copiarb
,c
,c/foo
,d
,d/e
ed/e/foo
).Respostas:
Se você conhece o nome do link simbólico e deseja transferir o link e o destino, pode:
As primeiras
rsync
transferências apenas osymlink
. O segundo comando localiza o nome do diretório real e o segundorsync
transfere o conteúdo do diretório.fonte
Isso seria possível se, e somente se, todos estivessem em 'mydir' e sincronizassem 'mydir' de um lugar para outro. O Rsync não é capaz de copiar fora do caminho especificado (com exceção dos links a seguir). por exemplo
fonte