usando rsync por meio de ssh seguro em um cron job

usando rsync por meio de ssh seguro em um cron job

Estou tentando configurar um script de shell no Debian GNU/Linux para fazer backup de um diretório e subdiretórios em um NAS remoto executando Linux via SSH. Esta conexão deve ser criptografada.

Eu tentei algumas abordagens diferentes envolvendo rsync rshcoisas assim, mas sem sorte. Eu sei como configurar o crontab, mas preciso de um script que seja executado de forma autônoma (ou seja, que não solicite senha)

Alguém pode ajudar-me?

EDIT: Posso fazer login com sucesso sem uma senha agora.

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

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

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

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

Responder1

O rsync desde 2.6.x usa como padrão o uso de ssh para transferências. Portanto, isso já está resolvido, desde que o rsync do seu NAS remoto seja compatível.

Quanto às transferências autônomas sem senha, configure a autenticação baseada em chave ssh para o usuário com o qual você está executando o cron e isso deve ser feito. Aqui está como você configura isso -http://www.cyberciti.biz/tips/ssh-public-key-based-authentication-how-to.html

Responder2

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

--arquivo de senha

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

Responder3

Sincronização de chave Ssh, você disse que estava funcionando, mas pensei em ainda 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 Rync -Isso criará uma pasta de backup para hoje e, em seguida, sincronizará os arquivos de ontem, isso reduzirá a carga na rede e, em seguida, sincronizará novamente os de hoje para fazer 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 limpará os backups: isso manterá o backup por uma semana. Posso confirmar que funciona no NAS pronto 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ó precisará adicionar via crontab -e

@daily sh backupscript
1 17 * * * sh dailycleanup

informação relacionada