erro rsync: o link simbólico não tem referência

6

Estou tentando configurar o rsnapshot (que usa o rsync) para fazer backup de um servidor Windows, mas estou tendo problemas com o rsync sendo incapaz de seguir um symlink no servidor para fazer o backup.

Configuração:

  • Windows Server 2008 R2 com o Cygwin instalado, que contém os arquivos cujo backup será feito
  • Servidor ArchLinux na mesma rede que deve fazer backup dos arquivos do servidor Windows
  • O servidor Windows tem o sshd instalado e funcionando
  • O servidor Windows não tem um daemon rsync em execução (até onde eu sei), mas posso usar o rsync sobre o ssh para se conectar ao servidor Windows a partir do servidor Linux e copiar arquivos.
  • Como um aplicativo mantém alguns dos arquivos para backup constantemente abertos, o servidor Windows é configurado para criar cópias de sombra de volume da unidade que contém os dados dos quais será feito backup
  • Eu uso o seguinte script para criar um link para o volume de cópia de sombra mais recente para que possa ser acessado pelo rsync:

    #!/bin/sh
    # Mount the latest shadow copy for the specified volume
    
    VOLUME="D:"
    LINK_NAME="E:\latest-data-shadow-copy"
    
    
    SHADOW_VOLUME='vssadmin list shadows /for=$VOLUME | grep "Shadow Copy Volume:" | tail -1 | tr -s ' ' | cut -d ' ' -f5'
    SHADOW_VOLUME+="\"
    
    rm $LINK_NAME
    cmd.exe /c mklink /d "$LINK_NAME" "$SHADOW_VOLUME"
    

O problema

Quando tento executar o rsnapshot para fazer backup dos dados no volume de cópia de sombra com link simbólico, ele retorna o seguinte erro:

    symlink has no referent: "/cygdrive/e/latest-data-shadow-copy"

Este é o comando rsync que o rsnapshot chama:

    /usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r --rsh=/usr/bin/ssh 'user@windowsip:/cygdrive/e/latest-data-shadow-copy/data-folder/' /media/backup-drive-1/.sync/

No entanto, se eu tentar usar scp para copiar arquivos do volume de cópia de sombra com link simbólico, ele funcionará bem:

    scp user@windowsip:/cygdrive/e/latest-data-shadow-copy/data-folder/test-file.txt test-file.txt

Até onde eu sei, isso parece sugerir que a causa do erro de rsync é que ele está sendo executado em chroot no servidor do Windows, impedindo que ele acesse o volume de cópia de sombra com link simbólico.

Eu tentei criar um /etc/rsync.conf e adicionar o seguinte:

    use chroot = no

mas não tem efeito no erro. Eu suponho que isso é porque este é um arquivo de configuração para o daemon rsync que eu não estou executando.

Perguntas

  • O que está impedindo que rsync acesse a cópia de sombra com link simbólico enquanto scp pode acessar os arquivos sem problemas?
  • Se o problema for a configuração use chroot rsync, como alterá-lo se não estiver executando um daemon rsync?

Obrigado por suas respostas antecipadamente!

    
por Marek 04.02.2014 / 23:01

1 resposta

0

Eu tive um problema semelhante com symlink has no referent:

A causa principal foi: o link estava apontando para um local inexistente. Apenas alguém na organização alterou a estrutura do sistema de arquivos depois que os links foram criados e não atualizou os links.

A solução foi uma das seguintes:

  1. Corrija os links que apontam para o local existente.
  2. Remova os links como não necessários (não é ninguém, mas o rsync os usa).
  3. Exclua a tentativa de rsync de acessar seu link com a opção --exclude '/cygdrive/e/latest-data-shadow-copy' . Isto é pedido método de "prevenção", no entanto, talvez não o melhor, então última opção proposta.
por 20.06.2018 / 12:55