usando o rsync através do ssh seguro em um cron job

3

Estou tentando configurar um script de shell sob o Debian GNU / Linux para fazer backup de um diretório e subdiretórios para um NAS remoto que executa o Linux via SSH. Esta conexão tem que ser criptografada.

Eu tentei algumas abordagens diferentes envolvendo rsync rsh e tal, mas sem sorte. Eu sei como configurar o crontab , mas eu preciso de um script que será executado sem supervisão (ou seja, ele não vai pedir senha)

Alguém poderia me ajudar?

EDITAR: Eu consigo logar com sucesso sem uma senha agora.

O problema agora é fazer com que o rsync copie os arquivos em /backups/ para [remote system]:/backups/

Apenas copia uma pasta de /backups/ para [remote system]:/backups/ .

EDIT: Parece sistema local tem um / backups e um / backup ... Eu tentei com / backups quando eu deveria ter usado / backup ...

Comando final: rsync -avzr -e ssh /backup/ admin@[IP]:/backups/

    
por Axel Latvala 24.08.2012 / 19:37

3 respostas

2

rsync, já que o padrão 2.6.x é usar ssh para transferências. Portanto, ele já é feito, desde que o seu rsync NAS remoto seja suportado.

Quanto a transferências menos autônomas de senhas, configure a autenticação baseada em chaves ssh para o usuário no qual você está executando o cron e isso deve ser feito. Veja como você o configurou - link

    
por 24.08.2012 / 19:40
2

Você também pode passar este sinalizador para o rsync para usar um arquivo para a senha:

- password-file

Pode facilmente chmodar o arquivo para 400, para que ninguém, a não ser seu usuário, possa ler esse arquivo (e root, é claro)

    
por 24.08.2012 / 23:29
2

Ssh Key syncing você disse que tinha esse trabalho, mas eu pensei em postar as etapas

ssh no seu NAS

Para fazer a chave

ssh-keygen -t rsa on local machine 

Em seguida, sincronize com o computador do qual você fará o backup

cat ~/.ssh/id_rsa.pub | ssh user@hostname    ‘cat>>.ssh/authorized_keys’

Script de backup do Rync - Isso fará com que uma pasta de backup para hoje, então sycn ontem arquivos hoje isso irá reduzir a carga na rede, então será rsync hoje a ser feito o backup.

#!/bin/sh

mkdir -p /storage/backups/'date +\%Y-\%m-\%d'-'date +\%A'/$host/$username

rsync -avz /storage/backups/'date --date=yesterday +\%Y-\%m-\%d'-'date--date=yesterday    +\%A'/$host/$username/ /storage/backups/'date +\%Y-\%m-\%d'-'date +\%A'/$host/$username/

rsync -avz -e ssh  /home/username/ /storage/backups/'date +\%Y-\%m-\%d'-'date +\%A'/$host/$username/

Você também precisará de um script que limpe os backups: isso manterá um backup de uma semana, posso confirmar que isso funciona no ready nas da Netgear

#!/bin/sh

# Definitions
sevendaysago=$(date --date='6 days ago' +%Y-%m-%d-%A)

# Delete backups from 7 days ago
rm -rf /storage/backups/$sevendaysago

você precisará executar isso para tornar os scripts executáveis

chmod u+x script.sh

no cron você só precisa adicionar via crontab -e

@daily sh backupscript
1 17 * * * sh dailycleanup
    
por 28.08.2012 / 05:44