rsync invocação para substituir links simbólicos apontando para a fonte?

2

Atualmente, estou movendo um sistema de arquivos grande para um novo servidor, pois o servidor de arquivos original não é mais capaz de manipular as gravações do sistema de arquivos.

Para tornar isso mais rápido, criei links simbólicos no sistema de arquivos de destino, apontando para o sistema de arquivos original.

Inicialmente: / company / release (ponto de montagem do sistema de arquivos original)

Após a migração: /company/release.old (aponta para o sistema de arquivos original depois da atualização do mapa do automount) / company / release (aponta para o novo servidor de arquivos / sistema de arquivos após a atualização do mapa do automount)

Em / company / release existem links simbólicos como os seguintes: /company/release/product-1.0.tar.gz - > /company/release.old/product-1.0.tar.gz /company/release/product-1.0 - > /company/release.old/product-1.0 (esta é uma árvore de arquivos)

O uso de links simbólicos permitiu que eu movesse as gravações para o novo sistema de arquivos rapidamente. Agora eu gostaria de migrar lentamente os arquivos e diretórios existentes para o novo sistema de arquivos.

O problema que estou correndo é que desde que os links simbólicos apontem de volta para os arquivos originais, o rsync não vê nenhuma diferença e, portanto, ele não copia realmente o (s) arquivo (s) ou diretório (s) e remove / sobrescreve os links simbólicos.

Existe um conjunto de sinalizadores de rsync que fará o que eu quero?

    
por bdbaddog 14.11.2012 / 23:30

2 respostas

1

Na página de manual:

        -L, --copy-links            transform symlink into referent file/dir
    
por 14.11.2012 / 23:38
0

O argumento -a fará o que você deseja, copiará links simbólicos (entre outras coisas), então o destino será "cópia de arquivamento" da fonte.

NOTA: o -a sinalizador de cp que parece muito com o sinalizador rsync -a (no qual ele preserva todos os atributos, data e hora), NÃO remove o alvo antes da cópia, portanto copia através de quaisquer links simbólicos existentes para onde quer que eles apontem.

Exemplo: * Arquivos a , b , c com strings "one", "two" e "three" neles respectivamente então tem o symlink aa apontando para a.*

Com cp -a c aa , você vai acabar com "três", o que parece muito errado até você perceber que eles estão fazendo POSX, e isso significa menor denominador comum.

Com rsync -a c aa , o link simbólico aa é substituído por um arquivo contendo "três" e o arquivo a permanece não corrompido.

    
por 17.04.2013 / 23:47