Para fazer isso diariamente na maioria das distribuições Linux, você deve poder colocar o rsync
comando (conforme a resposta do @ guido ) em um script e colocá-lo no /etc/cron.daily
diretório Enquanto anacron
estiver instalado (por padrão), os cron.daily
trabalhos perdidos serão capturados na próxima vez em que a máquina inicializar (além de serem executados à meia-noite, se a máquina for ligada).
Para o script, você apenas faria:
#!/bin/sh
rsync -a user@serverB:/source/folder/ /destination_folder
Você pode adicionar a -z
opção (compactação) se o backup estiver em uma conexão lenta (ish) ou se desejar economizar largura de banda, mas, na minha experiência, isso prejudicará o desempenho das máquinas / redes modernas.
Se você deseja manter o registro de cada backup, pode fazer algo como:
#!/bin/sh
rsync -av user@serverB:/source/folder/ /destination_folder \
>/var/log/backup_log 2>&1
Observe que para que isso funcione como uma tarefa cron, você deve ter o ssh sem senha configurado para raiz no servidorA para efetuar login no servidorB. Deve ser a conta raiz (ou seja, digitar /root/.ssh
), pois os cron.daily
trabalhos são executados como raiz.
anacron
não será aceito porcron
trabalhos do usuário . Embora você sempre possa usarsu
/sudo
do script para executar o rsync como um usuário específico. Mas observe que as chaves serão mantidas com mais segurança/root
.user
poderia ser apenas um usuário normal na máquinaB, dependendo do que você está fazendo backup.ls -l
alguns dos arquivos à sua pergunta, as pessoas poderão dar mais conselhos.Eu sugeriria o uso do rdiff-backup . Eu o uso agora para fazer backups incrementais automáticos todas as noites de meus próprios dados (duas estações de trabalho, dois servidores e uma conta no servidor de outra pessoa).
Eu usei o rsync anteriormente para isso, mas mudei para o rdiff-backup, pois é mais conveniente e pode fazer backups incrementais de arquivos grandes, como imagens de disco da máquina virtual. O rdiff-backup é muito parecido com os scripts de backup rsync anteriores, mas foi feito corretamente .
Coloquei um arquivo de script em /etc/cron.daily na máquina em que o backup está armazenado, que inicia o rdiff-backup uma vez por dia no início da manhã e busca os dados na máquina remota.
fonte
Além de todas as respostas anteriores, aqui está uma que se baseia em chaves SSH com restrições sobre o que pode ser feito ao fazer login com essa chave.
No servidor A
Neste, é menos importante se você criar um usuário separado ou usar um de seus nomes de usuário existentes, mas se fosse eu, eu criaria um usuário separado. Usarei o nome
bkpuser
de usuário para os dois servidores nos meus exemplos abaixo.Quando conectado
bkpuser
, crie uma chave SSH sem uma senha.No servidor B
Ativar
PubkeyAuthentication
nosshd_config
.Crie o usuário
bkpuser
. Defina uma senha muito complicada ou desative o login de senha para esse usuário (exatamente como você faz isso dependerá de qual unix e distro você está executando). O ponto é que o usuário deve efetuar login apenas com uma chave SSH. Verifique sebkpuser
possui acesso de leitura a todos os diretórios e arquivos que você deseja fazer backup.Copie a parte pública da chave criada em A para
~bkpuser/.ssh/authorized_keys
B. Edite para executar automaticamente um comando na conexão. Esse comando não deve ser um ponteiro para um script de shell; em vez disso, insira o script de shell diretamente na chave. Inclua também uma limitação para que a chave possa ser usada apenas no servidor A e em nenhum outro servidor. No exemplo abaixo, estou dando ao servidor A o endereço IP10.1.2.3
e estou assumindo que os arquivos nos quais quero fazer backup estão todos em baixo/data
.No servidor A
Se você estiver usando uma das guias cron que suporta
@reboot
entradas, adicione uma entrada como abkpuser
s crontab com o comandossh -i ~bkpuser/.ssh/id_dsa serverB > backup.tar.gz
. Se não permitir, defina-o a qualquer momento - se fossem meus dados, provavelmente o faria diariamente.fonte
Aqui está uma solução completa para fazer backup do servidor B para o servidor A todos os dias às 04:00, usando SSH.
Crie uma conexão SSH automática do servidor B para o servidor A
Crie um script de backup no servidor B
nano / root / backup
chmod 744 / root / backup
Automatize o backup no servidor B
crontab -e
Para mais detalhes, consulte as páginas Conecte-se ao SSH sem inserir uma senha no Linux e faça backup de um servidor no Debian ou Ubuntu Linux .
fonte
Você pode usar o rsync para isso (de maneira inversa):
Onde:
fonte
-a
implica-r
.O cerne da questão é como fazê-lo automaticamente (não é necessário inserir senhas):
screen
outmux
sessãoeval $(ssh-agent)
ssh-add
export RSYNC_RSH="ssh -i ~/.ssh/id_rsa ..."
while :; do rsync -av u@h:/p /local; sleep $[24*60*60]; done
fonte
ssh
.RSYNC_SSH
para pesquisar locais padrão das chaves SSH....
pontos onde pode adicionar argumentos úteis. Você também não leu meu último comentário, onde mencionei a "questão realmente importante", portanto nunca faria isso com chaves sem senha. Você também precisará ativarPubkeyAuthentication
e ninguém disse isso.