jlbn Posté(e) le 27 février 2014 Partager Posté(e) le 27 février 2014 Bonjour à tous, j'essaye de me créer mon propre script afin d'avoir notamment des fichiers de log détaillé et un plus grand contrôle. Lorsque je teste une simple commande : #!/bin/sh rsync -av /volume1/Backup/dossier1 /volume1/Backup/dossier2/ en créant un fichier script sh et en le lançant à la main dans le planificateur de tache, et bien rien ne se passe. Pour moi cette commande devrait copier le contenu de dossier1 dans dossier2 ça commence bien ! la finalité étant de copier mon volume 1 de mon nas principal vers un dossier de mon nas secondaire qui est sur un site distant en ssh. Je précise que la sauvegarde via l'outil intégré fonctionne bien et que j'ai procédé à la modif du port ssh par défaut en modifiant le fichier ssh_config. En résumé, je suis pas arrivé ! merci 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
jlbn Posté(e) le 27 février 2014 Auteur Partager Posté(e) le 27 février 2014 (modifié) Bonjour à tous, j'essaye de me créer mon propre script afin d'avoir notamment des fichiers de log détaillé et un plus grand contrôle. Lorsque je teste une simple commande : #!/bin/sh rsync -av /volume1/Backup/dossier1 /volume1/Backup/dossier2/ en créant un fichier script sh et en le lançant à la main dans le planificateur de tache, et bien rien ne se passe. bon en fait c'est l'appel de ce script logé dans un fichier script.sh qui ne fonctionne pas, ce fichier doit-il être placé dans un endroit particulier ? Modifié le 27 février 2014 par jlbn 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 27 février 2014 Partager Posté(e) le 27 février 2014 (modifié) Tu as oublié de déclarer le PATH dans ton script! Au minimum il faudrait mettre: PATH=/bin:/usr/bin:/usr/syno/bin D'autre part, via le planificateur de taches, tu est "aveugle" sur les erreurs, donc pense a ajouter la création d'un log ou tu pourras vérifier que tout s'est bien passé (ou pas): [ -t 0 ] || exec >/tmp/monscript.log 2>&1 Ces deux lignes à inclure en tête de ton script. Modifié le 27 février 2014 par CoolRaoul 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
jlbn Posté(e) le 27 février 2014 Auteur Partager Posté(e) le 27 février 2014 Merci CoolRaoul, J'ai ajouté ces deux lignes dans le script et ça fonctionne quand je met le script complet dans la fenêtre du planificateur de tâches. par contre, j'ai mis donc ça : #!/bin/sh PATH=/bin:/usr/bin:/usr/syno/bin [ -t 0 ] || exec >/volume1/Backup/rsync/journal.log 2>&1 rsync -av /volume1/Backup/jlbn /volume1/Backup/rsync/ Dans un fichier texte nommé script.sh. Quand je l'appelle via le planificateur en indiquant l'emplacement de ce fichier (/volume1/Backup/rsync/script.sh), rien ne se passe. Faut -il placer ce fichier dans un endroit particulier ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 27 février 2014 Partager Posté(e) le 27 février 2014 Quand je l'appelle via le planificateur en indiquant l'emplacement de ce fichier (/volume1/Backup/rsync/script.sh), rien ne se passe. Tu as probablement certainement oublié de le rendre exécutable. Essaie de faire: chmod +x /volume1/Backup/rsync/script.shEt re-testes. Faut -il placer ce fichier dans un endroit particulier ?Non, il peut être situé ou tu veux. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
jlbn Posté(e) le 27 février 2014 Auteur Partager Posté(e) le 27 février 2014 Tu as probablement certainement oublié de le rendre exécutable. Essaie de faire: chmod +x /volume1/Backup/rsync/script.sh Désolé je dois être un boulet, mais je fais ça où ? avec putty ? j'ai essayé, ça change rien, rien ne se passe. C'est peut être la façon de faire ce fichier de script qui est mauvaise pour moi, je crée le fichier avec notepad++. Suis un peu perdu à vrai dire 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 27 février 2014 Partager Posté(e) le 27 février 2014 je fais ça où ? En étant connecté en mode ligne de commande sur le NAS, par SSH ou par telnet avec putty ? Par exemple oui j'ai essayé, ça change rien, rien ne se passe. Normal, la commande "chmod" fait son travail sans rien afficher. C'est peut être la façon de faire ce fichier de script qui est mauvaise pour moi, je crée le fichier avec notepad++. Assure toi juste de l'avoir configuré comme ci dessous: Une fois connecté sur le NAS en mode ligne, tu peux exécuter directement ton script, inutile de passer par le gestionnaire de tache tant que tu est en phase de mise au point. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
jlbn Posté(e) le 27 février 2014 Auteur Partager Posté(e) le 27 février 2014 ça fonctionne c'était le format des sauts de ligne qui ne convenait pas. merci beaucoup, je peux faire des essais maintenant a+ 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 27 février 2014 Partager Posté(e) le 27 février 2014 ça fonctionne c'était le format des sauts de ligne qui ne convenait pas. Classique quand on utilise un éditeur sous Windows (mais une fois bien configuré Notepad++ est très bien) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
jlbn Posté(e) le 27 février 2014 Auteur Partager Posté(e) le 27 février 2014 Bon , je fais des essais en local, ça me permet de comprendre mieux les commandes petit à petit, pas de soucis. Par contre, si je veux faire la même chose vers mon syno distant en ssh, j'ai ce message d'erreur : Host key verification failed. rsync error: unexplained error (code 255) at io.c(687) [sender=3.0.9] Peut-on insérer le mot de passe dans le script ? Sinon, il faut faire une manip avec les clé ssh, mais là je suis un peu perdu sur la manip : à partir de quel serveur ? comment ? Merci de votre aide 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 27 février 2014 Partager Posté(e) le 27 février 2014 Là on s'éloigne du problème initial. Il va falloir d'abord que tu apprennes à utiliser l'authentification SSH par clé. Je t'engage à chercher de l'info et des tutos la dessus mais si tu pars de zero comme je commence à m'en rendre compte prévois d'y consacrer un peu de temps. Sache aussi que, si ton objectif est de synchroniser des dossiers à distance, peut-être ferais-tu mieux d'envisager l'utilisation des outils déà prévus ) cet effet dans l'interface DSM (synchro de dossier partagé), ou même attendre l'arrivé de DScloud de NAS à NAS en DSM 5, plutôt que passer par des scripts shell. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
jlbn Posté(e) le 27 février 2014 Auteur Partager Posté(e) le 27 février 2014 je ne cherche pas à faire une synchro, mais une sauvegarde entre mon syno chez moi et un autre localisé chez un copain. J'ai dèjà mis en place une sauvegarde via l'outil sauvegarder et restaurer en ssh et ça fonctionne, mais je souhaiterais pouvoir personnaliser un peu plus la sauvegarde (copie dans un dossier daté du jour des fichiers supprimés sur la source par exemple), avoir un log de suivi, etc.... je comprends en tout cas qu'il faut passer par la génération de clés ssh pour pouvoir faire ça en rsync, donc je vais suivre ton conseil et chercher des tutos clairs pour faire ça sur mon syno. merci en tout cas pour tes conseils 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
jlbn Posté(e) le 27 février 2014 Auteur Partager Posté(e) le 27 février 2014 Bon j'avance, j'ai généré la clé et lancé un script vers mon syno distant et ça fonctionne Quelques questions : j'ai généré la clé avec l'utilisateur root, y-a-t-il un risque ? même après avoir désactivé la connexion ssh dans terminal sur les 2 synos, le script fonctionne, c'est normal ? Par contre, lorsque j'essaye de me connecter avec putty, ça passe pas. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 28 février 2014 Partager Posté(e) le 28 février 2014 j'ai généré la clé avec l'utilisateur root, y-a-t-il un risque ? L'opération de génération de clé est indépendante du compte utilisé si c'est ça ta question; la clé générée à la même "qualité" quelle que soit le compte utilisée pour cela. Sinon le risque, en laissant le port SSH ouvert, est de se faire attaquer (mais pas obligatoirement pirater: il reste encore des mécanismes de sécurité efficace comme le blocage auto) . Je conseillerait d'utiliser des règles dans le firewall du Syno pour laisser passer sur le port SSH iniquement les IP "amies". A cet effet, décfinir une ou plusieurs règles autorisant les connexion SSH pour ces IPs (ou range d'IPs) suivie d'une règle bloquant tout le port 22. Iu mieux configurer le firewall en cochant "interdire l’accès" quand "aucune règle n'est remplie" (dans ce cas ne pas oublier de mettre en tète de liste une règle autorisant toutes les IP di LAN locale. De plusla règle de blocage devient inutile) même après avoir désactivé la connexion ssh dans terminal sur les 2 synos, le script fonctionne, c'est normal ? Par contre, lorsque j'essaye de me connecter avec putty, ça passe pas. Le service de sauvegarde réseau est basé sur rsync qui lui même s'appuie sur SSH. A partir du moment ou le service a été activé via le panneau de configuration DSM, le démon sshd l'est aussi, même si on a désactivé les connexions ssh dans "terminal" (ce qui aura juste pour effet d'interdire les connexions ssh "non rsync") 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
jlbn Posté(e) le 28 février 2014 Auteur Partager Posté(e) le 28 février 2014 merci pour tes conseils et précisions à nouveau, j'ai déjà mis des règles dans le pare feu en n'autorisant que des ip locales et l'adresse ip du syno source, celle-ci étant fixe. J'ai par ailleurs modifié le port par défaut pour le ssh, et activé le blocage auto. Je pense donc être tranquille. Je continue mes essais maintenant pour aboutir à un script fonctionnel et qui me convienne. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
jlbn Posté(e) le 28 février 2014 Auteur Partager Posté(e) le 28 février 2014 je continue et j'avance, ci dessus le code que j'utilise : #!/bin/sh PATH=/bin:/usr/bin:/usr/syno/bin #Déclaration des variables date=`date +%y_%m_%d` LOG=/volume1/Backup/rsync/log EXCLURE=/volume1/Backup/rsync/exclure.txt SOURCE=/volume1/Backup/jlbn DEST=/volume1/backup/test/ BACKUP=/volume1/backup/test/fichiers_suppr SERVEUR=root@111.222.222.222 #Fichier de log pour le suivi [ -t 0 ] || exec >$LOG/$date.log 2>&1 #Lancement de la sauvegarde rsync -av --stats --delete --backup -e "ssh -p 5555 -i /dir/.ssh/id_dsa" --backup-dir=$BACKUP/$date/ --exclude-from=$EXCLURE #j'ai pas essayé mais ça doit fonctionner $SOURCE $SERVEUR:$DEST #Supression du repertoire de sauvegarde des fichiers supprimés dans la source de plus de 5 jours : ça marche pas supprdossier= ls $BACKUP | head -n5 mv $supprdossier poubelle/ #Envoi d'un mail avec heure de début et fin et fichier de log à realiser exit Ce qui marche : fichier de log ok sauvegarde ok sauvegarde des fichiers supprimés dans la source dans un dossier date sur la cible : ok Ce qui marche pas : suppr du dossier date de plus de 5 jours Ce qui n'est pas fait : envoi du mail si vous pouvez m'aider un peu ou m'aiguiler merci d'avance 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 28 février 2014 Partager Posté(e) le 28 février 2014 Ce qui marche pas : suppr du dossier date de plus de 5 jours Je m'y prendrais plutôt comme suit: (laisser le code entre parenthèses afin que le "cd" reste local): ( cd "$BACKUP" && find . -type d -maxdepth 1 -mindepth 1 -mtime +5 | xargs rm -r ) A tester avec un "echo" avant le "xargs" pour tester (le "cd <truc> && <commande dangereuse>" ainsi que les quotes autour de $BACKUP (pas se faire avoir si variable non définie), sont des habitudes que j'ai prises, pas forcément utile ici mais bon: ceintures, bretelles , ... toussa, 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
jlbn Posté(e) le 28 février 2014 Auteur Partager Posté(e) le 28 février 2014 le résultat dans le fichier log : /volume1/Backup/rsync/script_distant_avance2.sh: cd: line 23: can't cd to /volume1/backup/test/fichiers_suppr pourtant le dossier existe bien sur la cible.... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
jlbn Posté(e) le 28 février 2014 Auteur Partager Posté(e) le 28 février 2014 Je m'y prendrais plutôt comme suit: (laisser le code entre parenthèses afin que le "cd" reste local): ( cd "$BACKUP" && find . -type d -maxdepth 1 -mindepth 1 -mtime +5 | xargs rm -r ) A tester avec un "echo" avant le "xargs" pour tester (le "cd <truc> && <commande dangereuse>" ainsi que les quotes autour de $BACKUP (pas se faire avoir si variable non définie), sont des habitudes que j'ai prises, pas forcément utile ici mais bon: ceintures, bretelles , ... toussa, par contre, j'ai mal dû m'exprimer le dossier à supprimer est sur le serveur cible, donc pas en local, du coup, le code proposé ne doit pas fonctionner ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 28 février 2014 Partager Posté(e) le 28 février 2014 par contre, j'ai mal dû m'exprimer le dossier à supprimer est sur le serveur cible, donc pas en local, du coup, le code proposé ne doit pas fonctionner ? En effet Pour effacer des fichiers distants faudrait pouvoir faire un ssh en mode commande mais il me semble que tu l'as désactivé? Sinon et si je ne me goure pas ça serait faisable comme ceci (attention aux quotes): ssh $SERVEUR "cd '$BACKUP' && find . -type d -maxdepth 1 -mindepth 1 -mtime +5 | xargs rm -r" 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
jlbn Posté(e) le 28 février 2014 Auteur Partager Posté(e) le 28 février 2014 oui ssh est désactivé et la commande ne fonctionne pas (permission denied), par contre en l'activant ça passe. merci encore 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
jlbn Posté(e) le 28 février 2014 Auteur Partager Posté(e) le 28 février 2014 (modifié) Sinon et si je ne me goure pas ça serait faisable comme ceci (attention aux quotes): ssh $SERVEUR "cd '$BACKUP' && find . -type d -maxdepth 1 -mindepth 1 -mtime +5 | xargs rm -r" Bon en fait la commande passe, mais rien ne se passe. Je vais encore abuser et expliquer ce que je souhaite : je conserve sur le serveur cible les fichiers supprimés de la source dans des dossiers datés du jour : 14-02-28 : dossier sur le serveur cible où sont localisés les fichiers supprimés de la source détectés lors de la sauvegarde du 28 14-02-27 : dossier sur le serveur cible où sont localisés les fichiers supprimés de la source détectés lors de la sauvegarde du 27 etc.... 14-02-24 : dossier sur le serveur cible où sont localisés les fichiers supprimés de la source détectés lors de la sauvegarde du 24 je fixe un nombre de jours de rétention de ces dossiers dans une variable RETENTION=5 avec ce paramètre, ça me permet de supprimer le dossier du 24 éventuellement, si le dossier est inexistant, et bien on envoie un message d'avertissement. Pour faire ça peut-etre faut-il changer la structure des dossiers. merci de votre aide (surtout de CoolRaoul depuis le début) Modifié le 28 février 2014 par jlbn 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 28 février 2014 Partager Posté(e) le 28 février 2014 Vu que ca ne fait moins d'un jour ton programme fonctionne c'est normal que rien ne se passe. Ma commande ("find -mtime") se base sur les *timestamps* des sous dossiers de "$BACKUP" sur la cible. Je suppose que, pour tester, tu as du y créer des dossiers "bidons" , mais ils sont tous forcément datés du jour. Les premier effacements ne seront effectifs que d'ici 6 jours. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
jlbn Posté(e) le 28 février 2014 Auteur Partager Posté(e) le 28 février 2014 (modifié) ok, je testerais demain alors en fixant le paramètre à 1 effectivement, j'avais crée des dossiers bidons. je te tiens au courant merci encore Modifié le 28 février 2014 par jlbn 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
jlbn Posté(e) le 28 février 2014 Auteur Partager Posté(e) le 28 février 2014 (modifié) Bonsoir, Je lâche rien et je poursuis dans ma quête d'un script fonctionnel pour mes besoins. Le script pour le moment : #!/bin/sh PATH=/bin:/usr/bin:/usr/syno/bin #Déclaration des variables date=`date +%y_%m_%d` LOG=/volume1/Backup/rsync/log EXCLURE=/volume1/Backup/rsync/exclure.txt SOURCE=/volume1/ DEST=/volume1/backup/jlbn/ BACKUP=/volume1/backup/fichiers_suppr SERVEUR=ip du serveur PORT=5555 RETENTION=5 #Ecriture dans le log de la date et heure de lançement echo "" > $LOG/$date.log echo "========================================================================================================================" >> $LOG/$date.log echo "Lancement de la sauvegarde le $(date +%A) $(date +%d) $(date +% $(date +%Y) à $(date +%H)h et $(date +%M)min" >> $LOG/$date.log #Lancement de la sauvegarde rsync -arv --partial --stats --delete --backup -e "ssh -p $PORT -i /root/.ssh/id_dsa" --backup-dir=$BACKUP/$date/ --exclude-from=$EXCLURE $SOURCE $SERVEUR:$DEST >> $LOG/$date.log #Supression du dossier de rétention le plus ancien selon la variable RETENTION définie en jours à tester plus tard #ssh $SERVEUR "cd '$BACKUP' && find . -type d -maxdepth 1 -mindepth 1 -mtime +'$RETENTION' | xargs rm -r" # Ecriture de la date et de l'heure de fin de la sauvegarde echo "" >> $LOG/$date.log echo "-----------------------------------------------------------------" >> $LOG/$date.log echo "Fin de la sauvegarde le $(date +%A) $(date +%d) $(date +% $(date +%Y) à $(date +%H)h et $(date +%M)min" >> $LOG/$date.log echo "========================================================================================================================" >> $LOG/$date.log echo >> $LOG/$date.log # Envoi du mail mail -s "sauvegarde vers maison" "$mail" < $LOG/$date.log exit tout fonctionne sauf l'envoi de mail à la fin, si vous pouvez m'aider merci beaucoup Modifié le 28 février 2014 par jlbn 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.