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!