Rsync para cópia perfeita: softlinks tornam-se..dir

0

Eu faço um "clone" de um disco montado para outro disco montado remotamente. Eu os chamarei local e remotamente. Local é slackware e ubuntu remoto No local

df -h /mnt/
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/fedora-root   49G  4.3G   43G  10% /mnt

No controle remoto

 df -h /media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29
Filesystem      Size  Used Avail Use% Mounted on
/dev/mmcblk1p2   57G  7.2G   47G  14% /media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29

Eu vejo rsync não é feito as coisas corretamente, depois de usar este comando do local

cd /mnt
 for i in * ;do rsync -avP --delete --ignore-errors $i/ 192.168.0.75:/media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29/$i; done

Eu vejo, por exemplo, no local

file bin
bin: symbolic link to usr/bin

e no controle remoto.

file /media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29/bin/
/media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29/bin/: directory

Eu quero bin destruído no controle remoto e ele deve se tornar (como no local) um link simbólico Qual opção para o rsync? Usando:

rsync -avPl rsync -rvPl

não funciona

    
por elbarna 07.02.2018 / 23:47

2 respostas

2

A opção -l ( -links ) está implícita em -a ( --archive ), mas você também precisa de -K ( --keep-dirlinks ) para que os diretórios de destino possam ser links simbólicos. Você pode achar que também precisa de --delete-before para corrigir a estrutura existente.

rsync -avKP --delete --ignore-errors src/ 192.168.0.75:dst/

Olhando mais de perto o seu código original, você está interagindo com o que eu vejo agora é o nível superior do seu servidor, incluindo /bin e /usr . Nesse caso, /bin é um link simbólico para /usr/bin , mas seu código passa isso para rsync com $i/ , o que equivale a /bin/ . Portanto, rsync nunca vê isso como um link simbólico porque seu $i/ já o referenciou.

Remover o seu for loop e deixar o rsync manipular a própria árvore de diretórios permitirá que ele veja o link simbólico de nível superior e o transfira corretamente.

    
por 08.02.2018 / 00:20
0

Eu encontrei uma boa "solução alternativa"

Em vez de fazer

cd /mnt
 for i in * ;do rsync -avXHhP --delete --ignore-errors $i/ 192.168.0.75:/media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29/$i; done

eu faço

rsync --avXHhP --delete --ignore-errors /mnt/ 192.168.0.75:/media/ubuntu/1c34a414-9fa2-4bfe-a57c-7f82f1b31b29 ; done

E funcione, o dir é idêntico até mesmo em links simbólicos

Editar: eu corrijo com -avXHhP, que é mais bom para o backup inicializável

    
por 08.02.2018 / 00:34

Tags