rsync para adaptar links que possuem caminhos absolutos para o local no destino

4

Seria possível com o rsync adaptar os links simbólicos absolutos para um novo local no destino?

Caso de teste
Imagine que eu tenho um link apontando para um arquivo como este:

/usera/files/common/test_file
/usera/files/common/links/test_link -> /usera/files/common/test_file

Agora eu gostaria de rsync o diretório inteiro common para outro local. (permissões de grupo são adaptadas, veja abaixo o porquê)

rsync -av --no-g /usera/files/common/ /userb/common

Isso me dá:

/userb/common/test_file
/userb/common/links/test_link -> /usera/files/common/test_file

O problema
O problema é que o grupo no destino é diferente do da origem (motivos de segurança), de modo que test_link não aponta para /userb/ space, mas sim para /usera/ e, portanto, não é legível para esse usuário. / p>

Pergunta
Seria possível dizer ao rsync para adaptar os links abaixo do ponto de sincronização ( /common/ here) para ajustar-se ao novo destino? Isso daria um link como tal:

/userb/common/links/test_link -> /userb/common/test_file

Eu tentei seguir a solução para um problema semelhante , mas não parece para fazer o que eu quero ..

Obrigado!

    
por ronszon 20.01.2012 / 17:26

1 resposta

1

O Rsync não suporta isso. Pode ser modificado para fazer isso, mas o rsync já tem muitas opções. Você poderia realizar seu objetivo executando isto após o rsync:

find /tmp/userb -type l -ls |
awk '$13 ~ /^\/tmp\/usera/ { sub("/tmp/usera/files/", "/tmp/userb/", $13); print $11, $13 }' |
while read A B; do rm $A; ln -s $B $A; done
    
por 20.01.2012 / 19:53

Tags