Copie o symlink E para onde ele aponta usando o rsync

11

Não precisa ser feito por rsync , mas seria bom não ter que escrever um script para fazer isso, e rsync é muito parecido com o que eu quero.

rsync -a (ou -l ) pode preservar links simbólicos e -L pode cancelar a referência de links simbólicos e copiá-lo como se fosse um arquivo normal / dir. No entanto, é possível manter o symlink e também copiar os arquivos / diretórios para os quais os links apontam?

Aqui está um exemplo. Digamos que tenhamos essa 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 faço rsync -aR dirA dest (ou outra coisa), gostaria de ter exatamente isso 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 apontando para fora do diretório de origem possam ser ignorados.

    
por Wei-Yin 14.10.2010 / 10:24

2 respostas

1

Se você souber o nome do link simbólico e quiser transferir o link e o destino , poderá:

rsync -a 'symlink' .
realdir="$(basename "$(readlink -f 'symlink')")"
rsync -a "$realdir" .

O primeiro rsync transfere apenas o symlink . O segundo comando encontra o nome do diretório real e o segundo rsync transfere o conteúdo do diretório.

    
por 19.11.2015 / 16:44
0

Isso seria possível se e somente se você estivesse em 'mydir' e estivesse rsync 'mydir' de um lugar para outro. O Rsync não é capaz de copiar fora do caminho que você fornece (com exceção dos links a seguir). por exemplo

mydir/dirA ...
mydir/dirB ...
...
    
por 14.10.2010 / 13:47

Tags