Como faço backup via rsync para uma máquina remota, preservando permissões e propriedade?

3

A unidade A é de 2 TB em um closet em casa.

A unidade B é de 2 TB no meu escritório no trabalho.

Gostaria que a unidade A fosse a que eu uso regularmente e ter o rsync mirror A to B nightly / weekly.

O problema que tenho com isso é que vários usuários coisas em A .

Eu tenho root run rsync -avz de A to $MYNAME:B

Raiz certamente pode ler tudo em A , mas não tem permissão para escrever itens que não sejam $MYNAME em B .

Como eu deveria estar fazendo isso? Eu deveria ter um chave privada sem senha em A que efetua login em raiz em B ? Isso parece super perigoso.

Além disso, prefiro usar o rsnapshot , mas parece que eles exigem que eu escolha de B a A usando a chave privada sem senha para a conta do root que eu estou com tanto medo.

    
por John Baber-Lucero 13.09.2012 / 19:18

3 respostas

3

Se for pretendido como um backup (estou olhando para a tag), não como uma cópia remota do diretório de trabalho, você deve considerar o uso de ferramentas como dar ou bom e velho tar . Se algum arquivo importante for excluído e você não perceber, você não terá chance de recuperá-lo após a sincronização semanal.

A segunda vantagem é que usar o tar / dar permitirá preservar a propriedade dos arquivos.

E o terceiro - você economizará largura de banda porque pode compactar o conteúdo.

    
por 13.09.2012 / 19:33
5

Há uma opção --fake-super que armazena os atributos que não podem ser definidos em atributos estendidos (o que significa que o FS de destino tem que suportar atributos estendidos).

Para verificar o suporte a atributos estendidos, você pode fazê-lo com setfattr ou rsync. Em seguida, demonstra como funciona:

~$ rsync --fake-super /bin/ls .
~$ getfattr -dm- ./ls
# file: ./ls
user.rsync.%stat="100755 0,0 0:0"

Note que -a não preserva tudo, você pode precisar de -H, -A, -X, --numeric-ids.

    
por 13.09.2012 / 21:30
4

Sei que sua pergunta é sobre o rsync, mas isso pode ser útil em relação a backups. É mais ou menos assim que faço meus backups externos.

Alternativa baseada em Rsync Rdiff-backup

Rdiff-backup pode valer a pena tentar.

Ele usa rsync (ou librsync ) sob a água e lida com toda a magia sobre permissões e atributos para você, mesmo quando o sistema de arquivos de destino não suporta. Isso é possível porque ele armazena isso em seu próprio formato e funciona também em plataformas cruzadas.

Como bônus, também fornece backups diferenciais, para que você possa voltar no tempo. No entanto, o rdiff-backup pode ser executado mais devagar devido à natureza dos backups diferenciais.

Sobre chaves SSH e segurança

How am I supposed to be doing this? Should I have a passwordless private key on A that logs into root on B? That seem's super dangerous.

Se você está com medo disso, o que é sensato estar aqui, o seguinte pode ser útil. Prefira o seguinte em uma linha com a chave pública que você configura na máquina que deseja fazer backup ( /root/.ssh/authorized_keys ):

command="rdiff-backup --server --restrict-read-only /",from="hostname.or.ip.address.to.allow",no-port-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAA.... and the rest of your key in the same line.

Este é um exemplo usando uma chave RSA. Mude para as suas necessidades.

Opcionalmente, configure o daemon SSH para aceitar apenas as chaves com forced-commands para root . Em sshd_config set PermitRootLogin forced-commands-only .

Isso fornece bastante segurança:

  • Login de comando forçado apenas para o root, neste caso executando o rdiff-backup no modo de servidor somente leitura.
  • Apenas autoriza se a conexão for feita a partir de uma determinada fonte (host).
  • Nenhuma porta TCP e encaminhamentos X permitidos.
  • Nenhum pty atribuído.

No entanto,

  • Possíveis falhas de segurança no Rdiff-backup podem ser exploradas.
  • Guarde suas chaves em um lugar seguro, sempre. (Exclua-os do seu backup, por exemplo!)
por 13.09.2012 / 23:56