Aller au contenu

jlbn

Membres
  • Compteur de contenus

    128
  • Inscription

  • Dernière visite

À propos de jlbn

jlbn's Achievements

Newbie

Newbie (1/14)

0

Réputation sur la communauté

  1. jlbn

    Utiliser Rsync

    effectivement ça fonctionne, j'ai un peu de mal sur l'uutilisation ou non des quote. Merci encore jlbn
  2. jlbn

    Utiliser Rsync

    je dois être un boulet, mais ça ne fonctionne pas et pour répondre à la question, c'est bien le INCLURE qui pose problème : le contenu du fichier lié à la variable ${INCLURE} : Commun famille svg_dossier1 le contenu du fichier lié à la variable ${EXCLURE} : aquota.* *~ *Thumbs.db *Autorun.inf .DS_Store @*/ @* [#]*/ [#]* .sync/ la partie du script traitant la sauvegarde : while read line; do echo "======Sauvegarde=======" >> $LOG/0000-dryrun.log echo "TRAITEMENT DU DOSSIER : $line" >> $LOG/0000-dryrun.log echo "======Statistiques=======" >> $LOG/0000-dryrun.log #Lancement de la sauvegarde rsync -av --dry-run --stats --progress --human-readable --force --partial --partial-dir=$PARTDIR --delete-excluded --max-delete=$NBMAX --backup --protect-args \ -e "ssh -p $PORT -i $RSA" \ --backup-dir=$BACKUP/$date/ \ --exclude-from=${EXCLURE} \ ${SOURCE}${line}/ ${SERVEUR}:${DEST}/${line} >> $LOG/0000-dryrun.log 2>$LOG/0000-dryrun-erreur.log echo "======fin de sauvegarde du dossier $line=======" >> $LOG/0000-dryrun.log done < ${INCLURE} le dossier commun famille n'est toujours pas traité. jlbn
  3. jlbn

    Utiliser Rsync

    à priori, le traitement correct des espaces avec le "\" fonctionne en bash mais pas en sh. or, j'ai tout écrit en sh, comment je fait pour transformer le script en bash et le lancer dans le planificateur ?. Par ailleurs, le script fonctionnera-t-il pour tout le reste ? merci jlbn
  4. jlbn

    Utiliser Rsync

    merci pour ces conseils, j'avais compris pour le caractère ?, mais j'ai essayé avec nom\ du dossier\ avec\ espace et ça n'a pas fonctionné. une autre question, au début du scipt j'ai mis : #!/bin/sh PATH=/bin:/usr/bin:/usr/syno/bin quelle est la différence avec : #!/bin/bash ? jlbn
  5. jlbn

    Utiliser Rsync

    re, bon finalement, après quelques essais ça fonctionne, il y avait plusieurs erreurs de ma part : sur le fichier d'exlusion, il faut entourer le caractère # avec [#], sinon la ligne est interprétée comme un commentaire sur le fichier permettant de sélectionner les dossiers à sauvegarder dans l'ordre voulu, il faut une dernière ligne à vide sinon le dernier dossier n'est pas pris en compte (manque un retour chariot) je remet pour ceux que ça intéresse le script complet. donc le script complet : #!/bin/sh PATH=/bin:/usr/bin:/usr/syno/bin ############################################################################################################### # Script de Sauvegarde Rsync # ############################################################################################################### # Version initiale : 05/03/2014 V.1.00 # # Version modifiée : 18/08/2014 V.1.10 Ajout de stat en début de log avec un dryrun # # 06/08/2016 V.1.20 Ajout d'une boucle permettant de traiter les dossiers dans un ordre # # précis à l'aide de la variable INCLURE et d'une boucle while read # # recodage avec egrep pour stats dans le mail # ############################################################################################################### # Réalisé par jlbn - Utilisation du script perl de CoolRaoul pour l'envoi de mail # ############################################################################################################### # Reste à réaliser : # # - en option, vérifier si le serveur cible est allumé # # - en option, allumer le serveur distant le cas échéant au début du script et l'éteindre à la fin # # # ############################################################################################################### #DECLARATION DES VARIABLES date=`date +%y_%m_%d` #Définition du dossier daté du jour LOG=/volume1/Backup/rsync/log #Dossier des fichiers log SIMUL=/volume1/web/simulation.txt #emplacement du fichier simulation permettant de modifier le mode via une page web EXCLURE=/volume1/Backup/rsync/exclure.txt #Fichier texte des éléments à exclure INCLURE=/volume1/Backup/rsync/inclure.txt #Fichier texte des éléments à inclure pas utilise pour le moment SOURCE=/volume1/ #contenu source à sauvegarder DEST=/volume1/backup/xxx/ #emplacement de destination des sauvegardes BACKUP=/volume1/backup/fichiers_suppr #Emplacement sur le serveur cible des dossiers journaliers comprenant les fichiers supprimés sur la source PARTDIR=/volume1/backup/rsync_partial #Emplacement des fichiers partiels en cours de transfert SERVEUR=root@999.999.999.999 SIMULATION=$(head -1 $SIMUL) #Fixé la valeur à 1 pour une simulation sinon 0, la valeur est définie à partir du fichier défini par la variable simul PORT=22 #Spécifie le numéro de port ssh, en local utiliser le port 22 RETENTION=10 #Nb des x derniers dossiers conservés dans le dossier BACKUP du serveur cible RETENTION2=30 #Nb des x derniers fichiers conservés dans le dossier LOG du serveur source RSA=/xxx/.ssh/id_dsa #Ficher de la clé ssh SMTP=smtp.xxx.xxx.xxx #Serveur smtp pour l'envoi de mail via un smtp sans authentification sfr = smtp.sfr.fr ovh = smtp.dsl.ovh.net orange = smtp.orange.fr ADRMAIL=votre.Adresse@mail.com #Mail d'envoi et reception SENDMAIL=/usr/local/bin/my_sendmail #Chemin complet du script perl d'envoi des mail - Utilisation du script perl de CoolRaoul SUJET="DiskStation - Synology DiskStation" #Sujet des mails envoyés NBMAX=10000 #nb maxi de fichiers supprimés par sécurité, utilisé avec le paramètre rsync --max-delete=NUM #FIN DE LA DECLARATION DES VARIABLES ET DE LA CONFIGURATION, NE PAS MODIFIER PLUS BAS #****************************************************************************************************************** if [ ${SIMULATION} -eq 1 ] then #Ecriture dans le log de la date et heure de lancement DEBUT="Lancement de la sauvegarde $(date +%A) $(date +%d) $(date +%B) $(date +%Y) à $(date +%H)h et $(date +%M)min" echo "===========================================================================" > $LOG/0000-dryrun.log echo "$DEBUT" >> $LOG/0000-dryrun.log echo "===========================================================================" >> $LOG/0000-dryrun.log echo "" >> $LOG/0000-dryrun.log #Lancement de la sauvegarde rsync -av --dry-run --stats --human-readable --force --partial --partial-dir=$PARTDIR --delete-excluded --max-delete=$NBMAX --backup \ -e "ssh -p $PORT -i $RSA" \ --backup-dir=$BACKUP/$date/ \ --exclude-from=$EXCLURE \ $SOURCE $SERVEUR:$DEST >> $LOG/0000-dryrun.log 2>$LOG/0000-dryrun-erreur.log #Code de la sauvegarde STATUT=$? #Ecriture de la date et de l'heure de fin de la sauvegarde FIN="Fin de la sauvegarde $(date +%A) $(date +%d) $(date +%B) $(date +%Y) à $(date +%H)h et $(date +%M)min" echo "" >>$LOG/0000-dryrun.log echo "===========================================================================" >> $LOG/0000-dryrun.log echo "$FIN" >> $LOG/0000-dryrun.log echo "===========================================================================" >> $LOG/0000-dryrun.log #Gestion du fichier d'erreur if [ $STATUT -eq 0 ] || [ $STATUT -eq 20 ]; then rm $LOG/0000-dryrun-erreur.log fi elif [ ${SIMULATION} -eq 0 ] then #Ecriture dans le log de la date et heure de lancement DEBUT="Lancement de la sauvegarde $(date +%A) $(date +%d) $(date +%B) $(date +%Y) à $(date +%H)h et $(date +%M)min" echo "" > $LOG/$date.log echo "===========================================================================" >> $LOG/$date.log echo "$DEBUT" >> $LOG/$date.log echo "===========================================================================" >> $LOG/$date.log echo "" >> $LOG/$date.log #Stock dans une variable les premières lignes du log pour réutilisation dans le mail STATLOG1=$(cat "$LOG/$date.log") #lance un dry run pour stats de sauvegarde rsync -av --dry-run --stats --human-readable --force --partial --partial-dir=$PARTDIR --delete-excluded --max-delete=$NBMAX --backup \ -e "ssh -p $PORT -i $RSA" \ --backup-dir=$BACKUP/$date/ \ --exclude-from=$EXCLURE \ $SOURCE $SERVEUR:$DEST > $LOG/0000-dryrun.log 2>$LOG/$date-erreur.log #Récupérer les statistiques du dryrun grep ^"Number of files:" "$LOG/0000-dryrun.log" >> $LOG/$date.log grep ^"Total file size:" "$LOG/0000-dryrun.log" >> $LOG/$date.log grep ^"Number of files transferred:" "$LOG/0000-dryrun.log" >> $LOG/$date.log grep ^"Total transferred file size:" "$LOG/0000-dryrun.log" >> $LOG/$date.log echo "" >> $LOG/$date.log while read line; do echo "======Sauvegarde=======" >> $LOG/$date.log echo "TRAITEMENT DU DOSSIER : $line" >> $LOG/$date.log echo "======Statistiques=======" >> $LOG/$date.log #Lancement de la sauvegarde rsync -av --stats --progress --human-readable --force --partial --partial-dir=$PARTDIR --delete-excluded --max-delete=$NBMAX --backup --protect-args \ -e "ssh -p $PORT -i $RSA" \ --backup-dir=$BACKUP/$date/ \ --exclude-from=${EXCLURE} \ "${SOURCE}${line}"/ ${SERVEUR}:"${DEST}/${line}" >> $LOG/$date.log 2>$LOG/$date-erreur.log echo "======fin de sauvegarde du dossier $line=======" >> $LOG/$date-erreur.log done < ${INCLURE} #Suppression dans le fichier de log des "progress" intermédiaires perl -0pe 's/[\r]/\n/g' < $LOG/$date.log > $LOG/$date-2.log #remplace les sauts CR en LF grep -v "%)$" $LOG/$date-2.log > $LOG/$date.log #supprime les "progress" intermédiaires rm $LOG/$date-2.log #supprime le fichier temporaire crée #Code de la sauvegarde STATUT=$? #Ecriture de la date et de l'heure de fin de la sauvegarde FIN="Fin de la sauvegarde $(date +%A) $(date +%d) $(date +%B) $(date +%Y) à $(date +%H)h et $(date +%M)min" echo "" >>$LOG/$date.log echo "===========================================================================" >> $LOG/$date.log echo "$FIN" >> $LOG/$date.log echo "===========================================================================" >> $LOG/$date.log #Stock dans une variable les statistiques du log pour réutilisation dans le mail echo "======Statistiques globales======" > $LOG/stat.log egrep "^======Sauvegarde=======|^TRAITEMENT DU DOSSIER|^======Statistiques=======|^Number of files:|^Number of files transferred:|^Total file size:|^Total transferred file size:|^======fin de sauvegarde=======" \ "$LOG/$date.log" >> $LOG/stat.log echo "" >> $LOG/stat.log STATLOG2=$(cat "$LOG/stat.log") #Stock dans une variable les dernières lignes du log pour réutilisation dans le mail echo "" > $LOG/stat.log tail -n 3 $LOG/$date.log >> $LOG/stat.log STATLOG3=$(cat "$LOG/stat.log") #Stock dans une variable la liste des fichiers supprimés dans la cible echo "" > $LOG/fichiersuppr.log echo "Liste des fichiers presents dans le dossier $date :" >> $LOG/fichiersuppr.log echo " -------------------------- " >> $LOG/fichiersuppr.log grep '^deleting ' $LOG/$date.log | sed s/^"deleting "//gw >> $LOG/fichiersuppr.log LISTESUPPR=$(cat $LOG/fichiersuppr.log) #Gestion du fichier d'erreur et envoi du mail en fonction du code statut de la sauvegarde if [ $STATUT -eq 0 ] then echo "La sauvegarde a reussi - Code statut = $STATUT $STATLOG1 $STATLOG2 $STATLOG3 $LISTESUPPR" | $SENDMAIL -s "$SUJET" \ -f "$ADRMAIL" -m $SMTP $ADRMAIL rm $LOG/$date-erreur.log elif [ $STATUT -eq 20 ] then echo "La sauvegarde a ete stoppee par le planificateur ou manuellement - Code statut = $STATUT $STATLOG1 $STATLOG2 $STATLOG3 $LISTESUPPR" | $SENDMAIL -s "$SUJET" \ -f "$ADRMAIL" -m $SMTP $ADRMAIL rm $LOG/$date-erreur.log else echo "La sauvegarde a echoue - Code statut = $STATUT $STATLOG1 $STATLOG2 $STATLOG3 $LISTESUPPR" | $SENDMAIL -s "$SUJET" \ -f "$ADRMAIL" -m $SMTP $ADRMAIL "$LOG/$date-erreur.log" fi #Supprime les logs devenus inutiles rm $LOG/fichiersuppr.log rm $LOG/stat*.log rm $LOG/*dryrun*.log #On conserve les x derniers dossiers du repertoire BACKUP en fonction de la valeur de RETENTION NBREP=$(ssh -p $PORT -i $RSA $SERVEUR "ls -1d $BACKUP/* | wc -l") let CRIT1=$NBREP-$RETENTION if [ $CRIT1 -le 0 ] then break; else let NBLISTE=$NBREP-$RETENTION ssh -p $PORT -i $RSA $SERVEUR "ls -1d $BACKUP/* | head -n $NBLISTE | xargs rm -r" fi #On conserve les x derniers fichiers du repertoire LOG en fonction de la valeur de RETENTION2 NBREP2=$(ls -1 $LOG/* | wc -l) let CRIT2=$NBREP2-$RETENTION2 if [ $CRIT2 -le 0 ] then break; else let NBLISTE2=$NBREP2-$RETENTION2 ls -1 $LOG/* | head -n $NBLISTE2 | xargs rm -r fi fi exit bonne journée
  6. jlbn

    Utiliser Rsync

    bon après test, le bout de code de Fenrir ne semble pas fonctionner avec les noms de dossier comportant des espaces, mais il m'avait mis sur la voie, j'ai donc utilisé : while read line; do echo "TRAITEMENT DU DOSSIER : $line" >> $LOG/0000-dryrun.log #Lancement de la sauvegarde rsync -av --dry-run --stats --progress --human-readable --force --partial --partial-dir=$PARTDIR --delete --backup \ -e "ssh -p $PORT -i $RSA" \ --backup-dir=$BACKUP/$date/ \ --exclude-from=$EXCLURE \ ""$SOURCE""$line"/" ""$SERVEUR":"$DEST"/"$line"" >> $LOG/0000-dryrun.log 2>$LOG/0000-dryrun-erreur.log done < $INCLURE avec la variable inclure contenant la liste des dossiers. mais là encore des soucis avec des dossiers comportant des espaces et la liste d'eclusion ne fonctionne plus (et je ne vois pas pourquoi) j'abandonne pour le moment, merci à Fenrir jlbn
  7. jlbn

    Utiliser Rsync

    merci je teste et fait un retour sinon, j'abuse un peu mais la liste des fichiers j'aimerais aller la chercher dans un fichier txt au lieu de l'inscrire en dur dans le script. (même si ça ne change pas grand chose c'est vrai)
  8. jlbn

    Utiliser Rsync

    je déterre mon sujet ! utilisateur depuis maintenant plus de 2 ans d'un script permettant la sauvegarde en rsync, celui-ci marche parfaitement bien et répond (presque) à mes besoins. en effet je souhaiterais maintenant prioriser la sauvegarde de certains dossiers. Je m'explique : j'ai par exemple des dossiers à sauvegarder : # inclusion des répertoires à sauvegarder et de leur contenu + svg_dossier2/ + svg_dossier2/** + svg_dossier1/ + svg_dossier1/** + commun/ + Commun/** + Backup/ + Backup/** + web/ + web/** et je souhaite que la sauvegarde se fasse dans cet ordre, d'abord le dossier et son contenu svg_dossier2, puis svg_dossier1, puis ... Je souhaite cet ordre précis dans le cas ou le volume de données à sauvegarder est important, la sauvegarde se fait dans l'ordre indiqué et traite les dossiers importants, puis s'il reste du temps (je fais un killall rsync à 9h), traite le reste. Sinon, la sauvegarde reprendra un peu plus tard et traitera la liste des dossiers dans le même ordre la fois suivante. je pensais qu'avec un --include-from, ça fonctionnerait mais non, les dossiers sont traités récursivement selon l'ordre trouvé dans la source (contenu de volume1 chez moi). J'ai cherché dans le manpage de rsync une option (l'option r ?) mais je ne suis pas sûr de moi. Sinon, il y a peut être la solution d’enchaîner les commandes rsync mais ça me semble très lourd à gérer (un rsync pour le dossier svg_dossier2, puis un autre pour le dossier svg_dossier1, puis... une idée ? et surtout une solution en gardant la simplicité de passer par un seul rsync et un fichier txt pour le include-from ? merci d'avance jlbn
  9. suite et fin, j'ai reçu de WD un nouveau DD, reconnu tout de suite et la création du volume est en cours. J'avais donc reçu un DD défectueux, ça fait toujours plaisir, merci cdiscount... jlbn
  10. les 2 volumes sont en basic sans protection de données, mais je n'avais pas testé le dd avant et il ne passe pas même pas un test smart, donc retour rma chez wd. ça commence bien merci de la réponse en tout cas
  11. bonsoir à tous, il y a quelques jours, mon disque 1 vieux de 4 ans plante, le volume 1 est indiqué comme planté dans l'interface du dsm. Compte tenu de l'âge du disque, je ne me pose pas trop de question et commande donc un nouveau disque. j’éteins le syno, j'enlève l'ancien disque et remet le nouveau, toutes les led sont au vert...sauf que dans le gestionnaire de stockage, rien, le disque n’apparaît pas, pas de possibilité de créer un nouveau volume ou de faire quoi que ce soit. je ne sais que faire et d'ou viens le problème, si vous avez des idées ou suggestions, elles sont les bienvenus. DS212 DSM 5.2 les 2 volumes étaient en basic volume planté : volume 1 ancien disque : seagate st2000 nouveau disque wd red 3T merci d'avance jlbn
  12. Bonjour, j'essaye de me servir de haproxy comme un point d'entrée unique à partir d'un port ouvert sur le routeur mais qui n'est pas le port 80 ni 443 (il s'agit du port 6899 qui pointe vers le port 6899 du syno). Avec haproxy, je pensais qu'en faisant par exemple : dsm.ipdusyno:6899, j'accèderai a l'interface, idem avec audio ou autre. evidemment ca ne fonctionne pas. y-a-t-il un moyen de faire ca ? merci
  13. Bonjour à tous, suite à des problèmes de ssl avec sabnzbd et un ds109+, je me suis finalement rabattu sur nzbget. Au passage, j'avais vu nzbget il y a longtemps, et la dernière version dispo est plutôt bien faite avec une interface sympa et une conso de ressources mini (merci à Diaoul je crois) J'en viens à mon problème, je souhaite installer le process Chartranslator fourni par Lapin et adapté pour nzbget, mais celui-ci ne fonctionne pas, je joins les messages fournis : j'ai installé le python en version 2 fourni par synocommunity, les autres paquets python ne donnant à priori encore moins satisfaction. Une idée ? Merci jlbn
  14. Bonjour à tous, j'essaye d'installer sabnzbd avec les paquets fournis sur synocommunity (python et sabnzbd) mais sans succès. Plus exactement, je n'ai plus la possibilité de cocher l'option ssl pour la configuration du serveur, pas plus que la possibilité de cocher l'option https (ça c'est pas grave). Sur les forums, à priori c'est un problème avec pyopenssl mais je ne vois pas (ou ne comprends pas) quoi faire sur mon syno pour ça. J'ai déjà pour info sabnzbd sur un ds212 avec les mêmes paquets sans soucis. Une idée ou solution ? Merci jlbn
  15. jlbn

    DS415+ ou DS716+ ou .... ?

    Merci pour vos conseils, je cherche avant tout un nas, la partie serveur application est accessoire, et je crois que perdre l'interface syno serait difficile. le 415+ est donc un bon choix avec en plus l'evolutivité du 4 baies par rapport au 716+. dommage que le 416+ n'existe pas...ou alors attendre quelques mois ?
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.