rsync no modo daemon: preserva a estrutura de diretórios absoluta

1

Estou tentando fazer backup de algumas pastas com o rsync iniciado no modo daemon. Basicamente o cliente lança este comando:

   rsync --delete -avz -R -e "ssh -i ${KEY}" ${SERVER}::${MODULE} {DST_DIR}

o servidor tem a chave pública em seu arquivo authorized_keys:

    command="rsync --server --daemon --config /root/rsync.conf"

e aqui está o arquivo rsync.conf contendo as pastas que eu quero fazer backup:

    uid=0
    gid=0
    read only = true
    use chroot = true
    [backup]
    path = /root
    path = /etc

O problema aqui é que o conteúdo dessas pastas é copiado e não seu caminho absoluto. Eu gostaria de / etc / etc_content e / root / root_content em meu $ {DST_DIR} e o que eu recebo é o conteúdo de / etc (eu presumo / root é sincronizado primeiro, e depois / etc, que exclui / root ... Ouch).

Tenho certeza de que há uma maneira de forçar o rsync a preservar o caminho absoluto. Eu tentei com a opção -R sem sucesso. Eu também tentei sem usar o chroot.

Como posso fazer isso?

Muito obrigado

    
por philippe 26.08.2013 / 14:58

2 respostas

2

Você está certo com a opção "- R" para usar caminhos relativos, mas funciona de maneira um pouco diferente. O $ {MODULE} exporta exatamente a parte do sistema de arquivos do servidor rsync que é definida pelo parâmetro "path" .

Você deve ter apenas um parâmetro "caminho" por seção "módulo" definido. Isso explica por que você pode ver o conteúdo / root primeiro e / etc depois, já que ele parece ser sobrescrito quando vários parâmetros de caminho são especificados.

Eu tentaria definir um módulo por diretório que eu queira fazer backup

uid=0
gid=0
read only = true
use chroot = true

[root]
path = /root

[etc]
path = /etc

e, em seguida, chame o rsync em todos esses módulos

for MODULE in root etc; do
  rsync -avzR $SERVER::$MODULE $DST_DIR/$MODULE
done

Ou eu exportaria uma parte maior do sistema de arquivos do servidor com uma única seção de módulo

uid=0
gid=0
read only = true
use chroot = true

[root]
path = /

E os diretórios de backup requied

rsync -avzR $SERVER::$MODULE/root  $SERVER::$MODULE/etc $DST_DIR

As duas formas preservarão a estrutura de diretório original / absoluta que você solicitou.

    
por 26.08.2013 / 17:36
0

Eu encontrei um caminho com as opções include; meu arquivo rsync.conf agora está assim:

    uid=0
    gid=0
    read only = true
    use chroot = true
    [backup]
    path = /
    include /etc/*** /root/*** /usr/local/etc/***
    exclude /***

Eu posso recuperar as pastas com seu caminho absoluto, mas aparece outro problema:

O problema aqui é que a sincronização só funciona para diretórios incluídos diretamente abaixo de / aka / etc / * e / root / * e não está funcionando para / usr / local / etc / *

O mesmo problema ocorre quando eu tento com a palavra-chave include from e preenche essas pastas no arquivo included_from especificado.

Estou meio desesperado; Ou isso não é possível para executar o que eu quero com rsync, ou estou faltando alguma coisa óbvia? A explicação do man para o rsync é bem difícil. dsumsky, obrigado pela sua resposta, e estou tentando pensar que devo adotar sua solução depois de tudo.

    
por 27.08.2013 / 11:44

Tags