NB: Esta é uma pergunta em duas partes: por que ocorre um erro e como solucionar o erro. (As duas partes estão relacionadas, na medida em que a resposta à pergunta "por que" pode lançar luz sobre a questão "como").
Um comando rsync -avuz /some/source/directory .
que estou tentando está dando vários erros (aproximadamente) da forma
rsync: symlink "/target/directory/foo/bar/baz" -> "../../bar/baz" failed: Read only file system (30)
... onde /target/directory
é o diretório atual.
Estou intrigado com esse erro. É verdade que o processo rsync
não tem permissão para gravar em ../..
, mas não vejo por que ele precisaria, em primeiro lugar: ele definitivamente tem permissão para gravar em /target/directory/foo/bar/baz
.
Seja como for, no caso em questão, o número de arquivos com esse problema representa uma fração muito pequena do número total de arquivos sendo copiados e, portanto, não haveria problema se esses links simbólicos problemáticos fossem "copiados para "arquivos regulares cujos nomes foram alterados de alguma forma para indicar sua natureza especial, e cujo conteúdo consiste apenas no destino do link simbólico original. Por exemplo, o link simbólico
/some/source/directory/foo/bar/baz -> ../../bar/baz
mostrado anteriormente seria "copiado para" o arquivo normal
/target/directory/foo/bar/baz-PSEUDOSYMLINK
... consistindo exatamente na linha mostrada abaixo
../../bar/baz
Eu vi algo similar feito ao copiar árvores de diretório Unix para sistemas Windows.
Existe uma maneira simples de fazer isso?
Tags permissions rsync symlink