Maneira correta de configurar o rsnapshot sobre o ssh

2

Eu tenho dois servidores Debian 8:

  1. Servidor A: em casa, muito espaço de armazenamento
  2. Servidor B: vps no host comercial, executando serviços de web e correio

Ambos são projetos favoritos, não comerciais.

O servidor B executa o rsnapshot, que funciona bem. O servidor A e B podem conectar-se um ao outro com certificados, o que também funciona bem. Eles não permitem o SSH root diretamente, mas eles têm contas de usuário regulares que podem sudo su para se tornar root. Para sessões SSH não automatizadas, uso certs protegidos por senha.

O último par de dias eu tenho tentado configurar o rsnapshot no servidor B para criar backups do servidor B para o servidor A, ou no servidor A para puxar backups do servidor B para o servidor A, que parece ser o caminho adequado de acordo com documentação do rsnapshot.

Meu problema é que muita documentação menciona servidores relativamente, por exemplo, eles dizem 'faça x em seu servidor' ou 'copie y para ~ / somepath'. Raramente encontrei documentação explicitamente sobre qual servidor possui quais funções e em qual diretório home do usuário você precisa copiar y.

Então:

  • Os dados de produção que precisam ser armazenados em backup estão no servidor B.
  • Os backups precisam ser salvos no servidor A.
  • O servidor A executará o rsnapshot.

Perguntas:

Na configuração do rsnapshot, qual conta de usuário eu preciso dizer é efetuar login via SSH no servidor B? Ou o root (que fica complicado ou inseguro) ou uma conta de usuário regular dedicada, por exemplo, um usuário chamado 'backupmaker' (o Debian tem um usuário do sistema chamado 'backup' que é elegível, mas eu não quero mexer com). / p>

Eu li os dois e eu entendo o mantra do Linux que outras formas podem estar bem, mas estou realmente procurando por algum conselho prático de alguém que tenha isso configurado em um ambiente de produção, preferencialmente com linhas relevantes de / etc / rsnapshot. conf e /home//.ssh/authorized_keys (você realmente usa from="abcd", command="/ home / remoteuser / cron / validate-rsync", e é que o script 'validate-rsync' é obrigatório ou pode ser qualquer comando, por exemplo, /home/serverAuser/myrsnapscript.sh?).

Você usa a conta root para criar backups no servidor B, uma conta de usuário comum, uma conta dedicada personalizada ou a conta interna de 'backup'?

Eu não estou procurando por sshfs ou outras alternativas; Eu quero fazer isso direito, talvez expandi-lo para um sistema de backup de hub mais tarde.

Qualquer informação e conselho são bem-vindos!

    
por Forkbeard 22.11.2016 / 10:10

1 resposta

4

Você estará executando como root no servidor A, que executa rsnapshot, e ssh-ing para seu usuário dedicado backupmaker on B. Normalmente, você desejará que este usuário consiga sudo rsync, para que você possa ler todos os arquivos para enviar de volta para A.

Suponha, por exemplo, que você tenha um usuário em A que possa sudo e outro usuário em B que possa sudo. Em B, crie o usuário backupmaker e forneça uma senha. Em B crie uma entrada sudoers para executar o rsync sem uma senha, por exemplo:

sudo tee /etc/sudoers.d/backupmaker <<<'backupmaker ALL = (root) NOPASSWD: /usr/bin/rsync'

(Cuidado ao editar arquivos sudoers. Certifique-se sempre de ter um login raiz em algum lugar para recuperação). Em A, das chaves ssh da raiz de cópia da sua conta de usuário para este novo usuário:

sudo ssh-copy-id backupmaker@B

(Se você ainda não tem a configuração das chaves-raiz, use sudo ssh-keygen -q -N '' em A para criá-las). Em A, test root pode ssh para B sem senha e sudo para rsync:

sudo ssh backupmaker@B sudo rsync --version

Em A configure /etc/rsnapshot.conf , removendo as linhas backup existentes e adicionando no final, por exemplo

verbose     3
cmd_ssh     /usr/bin/ssh
rsync_long_args     --rsync-path="sudo rsync" --delete --numeric-ids --relative --delete-excluded
backup  backupmaker@B:/home/    mybackupofB/

Cuidado, as 2 colunas são separadas por tabulações, não por espaços. A última linha é um exemplo dizendo que nós iremos ssh para backupmaker@B e copiaremos /home de volta para A's /.snapshots/hourly.0/mybackupofB/ . Observe que rsync_long_args tem uma opção --rsync-path="sudo rsync" , o que significa que o comando executado em B não será rsync, mas sudo rsync . Para começar, use um diretório pequeno para backup em vez de todos / home. Você também pode querer alterar o posicionamento padrão de backups em A de /.snapshots .

Agora você pode tentar um primeiro instantâneo em A.

sudo rsnapshot -vvv hourly

Isso será executado nos comandos A:

/usr/bin/ssh -l backupmaker B sudo rsync --server --sender -logDtprRe.iLsfx --numeric-ids . /home
/usr/bin/rsync -a --rsync-path='sudo rsync' --delete --numeric-ids --relative --delete-excluded --rsh=/usr/bin/ssh backupmaker@B:/home /.snapshots/hourly.0/backupmaker/

e em B:

sh -c sudo rsync --server --sender -logDtprRe.iLsfx --numeric-ids . /home

Procure em /var/log/rsnapshot para registros.

    
por 22.11.2016 / 13:05

Tags