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 rsh
coisas 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