Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Système de sauvegarde via rsync
#1
Bonjour à tous,

je suis nouveau dan l'univers Raspberry, et aussi un peu en linux de manière général.

Je possède malgré tout un serveur dédié que j'administre moi-même, et j'ai fait l'acquisition d'un Raspberry Pi 3, sur lequel j'ai installé Raspbian Jessie, afin de me confectionner un système de sauvegarde.

Mon script fonctionne si je le lance depuis la console, mais en tache cron, la synchronisation ne se fait pas.
Mais le script se lance car je génère un log.
Je n'ai pas trouver comment activer le mode bavard afin d'avoir plus d'information.

J'ai installer rsync, sshpass et créer des clef ssh mais je ne comprends pas le problème.

voici le script :

Code :
[== Indéfini ==]
#!/bin/bash

#test avec sshpass
#sshpass -p 'MonMotDePasse' rsync -r [email protected]:/var/backup /media/pi/BACKUP

echo '---'
echo $(date +%d/%m/%Y - %H:%M)

eval 'ssh-agent'
ssh-add .ssh/id_dsa

sudo /usr/bin/rsync -avz -e "/user/bin/ssh -i /home/pi/.ssh/id_dsa"  [email protected]:/var/backup /media/pi/BACKUP

echo '---'

J'ai testé avec ou sans sudo, avec ou sans /usr/bin/

j'ai mis mes fichiers et dossiers en chmod 777 sur mon rapsberry pour voir mais aucune différence.

Si quelqu'un à une idée je suis preneur...
Répondre
#2
Je pense que ton souci vient de la ligne:
Code :
ssh-add .ssh/id_dsa
Avec crontab, la plupart des variables d'environnement ne sont pas chargées, il te manque surement le home.
Je te conseille donc d'utiliser le chemin complet:
Code :
ssh-add /home/pi/.ssh/id_dsa

(apparté) Pour ma part, j'ai fait un système identique mais j'ai mis ma clé ssh sur le serveur distant pour avoir une authentification automatique. Du coup, je ne fais que du rsync, sans compliquer la ligne de commande.
(apparté bis) Tu autorises le root à se connecter directement en ssh sur ton serveur ? Ceci est une faille de sécurité car tu "donnes" un login a d'éventuels attaquants, ils n'ont plus qu'à chercher le pass.
Répondre
#3
Bonjour,

Merci de ta réponse, pour une raison que j'ignore mon script à fini par fonctionner, je vais le laisser tourner ce week end pour voir si cela est toujours le cas au bout de quelques jours, sinon j'essaierai ta solution, et si il est fonctionnel, je notifierai le script final ici.
Je sais que niveau sécurité c'est moyen, mais je début en gestion de serveur, j'ai donc voulu commencer par avoir une méthode fonctionnelle avant de l'améliorer.
Pour la clef ssh j'ai suivi cette méthode : http://prendreuncafe.com/blog/post/2005/...ur-distant
Mais je ne vois pas comment faire la procédure inverse, mettre la clef ssh sur le serveur.
Répondre
#4
Ah oui, je comprends, tu as mis un mot de passe sur ta clé.
Essaye de refaire une clé (supprime la précédente) en n'entrant rien lorsque le système te demande une passphrase (tu fais juste entrée à la demande et à la confirmation).
Répondre
#5
C'est déjà fait, j'ai refait la procédure complète sans notifier de passphrase.
Si la sauvegarde se déroule correctement cette nuit, je fournis le script final, et je commencerai à voir pour améliorer la sécurité.
Merci
Répondre
#6
Au cas où, voici le script que j'utilise pour faire une sauvegarde miroir sur mon serveur (l'inverse de ce que tu fais donc):
Code :
#!/bin/sh

BASE="/media/pidrive/"
SRC="${BASE}sources/"
TGT="[email protected]:/home/backup"

LOG="/tmp/rsync.log"

#####################
# DO NOT EDIT BELOW #
#####################

NOW=$(date +"%Y%m%d")

echo "Starting rsync $NOW" >> $LOG
# mode recup #
/usr/bin/rsync -vrz --size-only --delete-after --exclude '*.tgz' ${SRC}/* ${TGT}/mirror/
/usr/bin/scp ${BASE}${NOW}.tgz ${TGT}/
echo "Ending rsync" >> $LOG

exit 0
Répondre
#7
Merci beaucoup,
je vais garder cela de côté.
Répondre
#8
Attention, c'est un fonctionnement en mode miroir pour la partie rsync, c'est à dire que ça met à jour les fichiers qui doivent l'être (taille modifiée), ajoute ceux qui ne sont pas sur la destination et supprime ceux qui ne sont plus sur le serveur source.
Répondre
#9
Bonjour,
Désolé d'avoir mis autant de temps à répondre mais je voulais être sur que tout fonctionne.

J'ai du lancer une fois mon script manuellement afin de valier ma clef d'après se que j'ai compris, mais sinon sa y est mon script fonctionne enfin même si il demande à être amélioré.

Voici se que cela a donné au final :
Code :
[== Indéfini ==]
#!/bin/bash

echo '---'

echo 'Début' $(date +%d/%m/%Y-%H:%M)

eval 'ssh-agent'

ssh-add .ssh/id_dsa

sudo /usr/bin/rsync -avz -e "/usr/bin/ssh -i /home/pi/.ssh/id_dsa" [email protected]:/backup /media/pi/BACKUP

echo 'Fin' $(date +%d/%m/%Y-%H:%M)

echo '---'

sudo shutdown -h now
Répondre
#10
En fait, la seule chose que je ne comprends pas, c'est pourquoi tu passes par une évaluation de la commande ssh pour te loguer, alors que rsync est capable de faire l'authentification par clé.

Et quand tu dis "valider ta clé", n'est-ce pas plutôt ajouter ton serveur dans les hôtes connus ?
Répondre
#11
Il est fortement possible que l' eval 'ssh-agent' ne serve pas effectivement.
j'ai fait tellement d'essais que une fois que cela fonctionnait je n'y ai plus touché.
J'essayerai de le retirer pour voir si cela fonctionne toujours.
et oui c'est l'ajout du serveur dans la liste des hôtes, mais je n'avais pas noté la phrase lorsque la question m'a été posé il y a quelques jours.
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)

A propos de Communauté francophone RPi

Communauté francophone RPi est un forum d'aide et de partage autour du Raspberry Pi et des micro-ordinateurs.