rsync segue os links e usa o caminho recriado do arquivo para o qual o link aponta

0

Eu tenho um diretório de links simbólicos A / apontando para arquivos reais no conteúdo do diretório /.

Os links simbólicos em A / podem ser excluídos, mas os arquivos no conteúdo / nunca são excluídos.
Por exemplo A / se parece com:

A/
 --B/ 
   --link1 -> contents/file1.txt<br/>
 --C/
   --link2 -> contents/file3.txt<br/>

conteúdo / se parece com:

contents/
  --file1.txt
  --file2.txt
  --file3.txt
  --file4.txt

Portanto, os arquivos do conteúdo podem não estar vinculados por ninguém. Eu gostaria de usar o rsync para sincronizar ambos os diretórios, mas apenas transferindo arquivos que são realmente apontados por links. Ou seja transferir file1.txt e file3.txt.
Eu gostaria de usar o rsync para transferir os links nos links A / seguintes e substituir os nomes dos links no destino pelo caminho do arquivo apontado.

rsync --link A/* dest/ 

E termine com:

dest/
  --contents/
    --file1.txt
    --file3.txt

Obrigado

    
por Mauricio Galindo 03.02.2017 / 08:48

1 resposta

0

Não consegui fazer isso apenas com rsync, mas sim com uma combinação para find e rsync. Primeiro, criei um instantâneo do diretório de conteúdo ao fazer

find  A/ -type l -exec readlink  {} \; 

Em seguida, criei um diretório content.snapshot onde criei um link simbólico apontando para o arquivo em conteúdo no diretório content.snapshot para cada um dos arquivos retornados pelo comando find.

Finalmente, eu rsynced o diretório content.snapshot em vez do diretório de conteúdo. Ativando a exclusão de arquivos e o link seguindo no comando rsync.

A estrutura do diretório é assim:

contents/
  --file1.txt
  --file2.txt
  --file3.txt
  --file4.txt

contents.snapshot/
  --contents/
    --file1.txt -> ../../contents/file1.txt
    --file3.txt -> ../../contents/file3.txt
    
por 06.02.2017 / 02:08