Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 02/10/2019, à 10:15

Abysses17

Script de sauvegarde avec rsync

Bonjour à tous !

J'ai besoin de conserver les fichiers logs de zabbix dans un dossier, pour faire ma sauvegarde j'ai essayé de creer un script mais j'ai un petit soucis je pense de syntaxe mais je ne vois pas ou ... si vous avez la solution je suis preneur.

Voici mon script :

#!/bin/bash
#Création de la date de sauvegarde
DATE=$(date +"Sauvegarde_du_%d%m%y")

#Dossier source - Dossier destination
SOURCE_DIR="/var/log/zabbix/"
BACKUP_DIR="/home/backup/zabbix_log"

#Nombre de jours de sauvegarde

RETENTION=365

#Création du dossier de sauvegarde a la date

mkdir -p $BACKUP_DIR/$DATE

#Sauvegarde
if [ $rsync -apv --del --stats --filter 'root@localhost:/$SOURCE_DIR' '$BACKUP_DIR' ]
then echo "La sauvegarde s'est terminée avec succès"
else echo "Impossible d'effectuer la sauvegarde"
fi

#Effacement des anciennes sauvegardes

find $BACKUP_DIR/* -mtime +$RETENTION -delete

Quand j'exécute ce script la console me retourne le message suivant :

./sauv_log.sh: ligne 21 : [: trop d'arguments

Du coup j'avoue secher ... donc si vous avez une idée surtout n'hesitez pas smile

--
Modération : ajout des balises [ code ] (sélectionner le texte et utiliser l'icône < >, merci)

Dernière modification par bruno (Le 02/10/2019, à 11:17)

Hors ligne

#2 Le 02/10/2019, à 10:51

pingouinux

Re : Script de sauvegarde avec rsync

Bonjour,
Essaye en enlevant les [ ] sur cette ligne :

if $rsync -apv --del --stats --filter 'root@localhost:/$SOURCE_DIR' '$BACKUP_DIR'

au lieu de

if [ $rsync -apv --del --stats --filter 'root@localhost:/$SOURCE_DIR' '$BACKUP_DIR' ]

Merci d'utiliser les balises-code <> pour les commandes et leurs retours.

Hors ligne

#3 Le 02/10/2019, à 11:15

bruno

Re : Script de sauvegarde avec rsync

Je ferais  à la place :

$rsync -apv --del --stats --filter 'root@localhost:/$SOURCE_DIR' '$BACKUP_DIR'
if [ $? == 0 ]
then
   echo "Succès"
else
   echo "Échec"
fi

Il y a des choses incohérentes dans ton script :
- valeur de la variables $rsync ?
- la synchro se fait dans $BACKUP_DIR et non $BACKUP_DIR/$DATE
- il faudrait traiter les erreurs : que faire si rsync échoue, que faire si le dossier de sauvegarde existe déjà
- quel interêt d'utiliser SSH puisque c'est sur la me machine (root@localhost) ? C'est pour passer en root sans avoir à utiliser sudo ?

Dernière modification par bruno (Le 02/10/2019, à 11:19)

Hors ligne

#4 Le 03/10/2019, à 10:52

Abysses17

Re : Script de sauvegarde avec rsync

pingouinux a écrit :

Bonjour,
Essaye en enlevant les [ ] sur cette ligne :

if $rsync -apv --del --stats --filter 'root@localhost:/$SOURCE_DIR' '$BACKUP_DIR'

au lieu de

if [ $rsync -apv --del --stats --filter 'root@localhost:/$SOURCE_DIR' '$BACKUP_DIR' ]

Merci d'utiliser les balises-code <> pour les commandes et leurs retours.

Si j'enlève les [ ] et que je lance la commande, j'ai le message suivant :

./sauv_log.sh: ligne 21: -apv : commande inconnue.

Si je décompose les options de rsyn et que je note <-a -p -v> j'ai la meme erreur

Hors ligne

#5 Le 03/10/2019, à 10:58

Abysses17

Re : Script de sauvegarde avec rsync

bruno a écrit :

Je ferais  à la place :

$rsync -apv --del --stats --filter 'root@localhost:/$SOURCE_DIR' '$BACKUP_DIR'
if [ $? == 0 ]
then
   echo "Succès"
else
   echo "Échec"
fi

Il y a des choses incohérentes dans ton script :
- valeur de la variables $rsync ?
- la synchro se fait dans $BACKUP_DIR et non $BACKUP_DIR/$DATE
- il faudrait traiter les erreurs : que faire si rsync échoue, que faire si le dossier de sauvegarde existe déjà
- quel interêt d'utiliser SSH puisque c'est sur la me machine (root@localhost) ? C'est pour passer en root sans avoir à utiliser sudo ?

Bruno,
en essayant avec ta méthode, j'ai les messages d'erreur suivants :

 Unknow filter rule: 'root@localhost:/$SOURCE_DIR'

et

rsync error: syntax or usage error (code 1) at exclude.c(927) [client=3.1.3]

L'interet d'utiliser SSH et rsync c'est que pour le moment nous avons qu'un serveur local ou effectuer la sauvegarde, mais dans un futur proche il sera dans un autre batiment et j'essaye donc de me familiariser avec rsync.

Merci pour votre aide

Hors ligne

#6 Le 03/10/2019, à 10:58

pingouinux

Re : Script de sauvegarde avec rsync

Comme l'indique Bruno en #3, il faut aussi enlever le premier $ (je ne l'avais pas vu) :

if rsync -apv --del --stats --filter 'root@localhost:/$SOURCE_DIR' '$BACKUP_DIR'

Hors ligne

#7 Le 03/10/2019, à 11:12

bruno

Re : Script de sauvegarde avec rsync

Il y a plein d'autres erreurs que je n'ai pas forcément relevées dans cette commande ( / en trop, ssh, --filter sans règles derrière, -p inutile, etc.) J'attendais les réponses à mes questions du #3.

Si la source et la destination sont sur le même machine :

rsync -av --del --stats  "$SOURCE_DIR"  "$BACKUP_DIR"

Si la source est sur un serveur distant accessible par SSH :

rsync -av --del --stats -e ssh utilisateur@serveur:"$SOURCE_DIR"  "$BACKUP_DIR"

Avant de chercher à créer un script il faut d'abord tester ta commande directement dans un terminal et bien vérifier les options utilisées à l'aide de man rsync.

Dernière modification par bruno (Le 03/10/2019, à 11:13)

Hors ligne

#8 Le 03/10/2019, à 15:05

Abysses17

Re : Script de sauvegarde avec rsync

bruno a écrit :

Il y a plein d'autres erreurs que je n'ai pas forcément relevées dans cette commande ( / en trop, ssh, --filter sans règles derrière, -p inutile, etc.) J'attendais les réponses à mes questions du #3.

Si la source et la destination sont sur le même machine :

rsync -av --del --stats  "$SOURCE_DIR"  "$BACKUP_DIR"

Si la source est sur un serveur distant accessible par SSH :

rsync -av --del --stats -e ssh utilisateur@serveur:"$SOURCE_DIR"  "$BACKUP_DIR"

Avant de chercher à créer un script il faut d'abord tester ta commande directement dans un terminal et bien vérifier les options utilisées à l'aide de man rsync.

Tout d'abord, merci a vous deux pour votre aide !

Bruno,

En testant la commande directe

rsync -avp --del --stats /var/log/zabbix/* /home/backup/zabbix_log/

Ma commande s'exécute sans aucune erreur.

Hors ligne

#9 Le 03/10/2019, à 15:44

bruno

Re : Script de sauvegarde avec rsync

Il te suffit donc d'utiliser cette commande dans ton script.
Ce n'est pas grave, mais le paramètre -p est inutile car implicite avec -a.

Par curiosité quel est l'objectif d'une copie des logs de zabbix sur la même machine ?

Hors ligne

#10 Le 04/10/2019, à 07:08

Abysses17

Re : Script de sauvegarde avec rsync

bruno a écrit :

Il te suffit donc d'utiliser cette commande dans ton script.
Ce n'est pas grave, mais le paramètre -p est inutile car implicite avec -a.

Par curiosité quel est l'objectif d'une copie des logs de zabbix sur la même machine ?

Merci Bruno,

En mettant juste

rsync -av --del --stats "$SOURCE_DIR" "BACKUP_DIR/$DATE"

le script s'exécute parfaitement et sans message d'erreur.

Et pour répondre à ta curiosité, je vais rester un peu vague et j'en suis désolé, mais zabbix me sert à surveiller un réseau avec la totalité les éléments actifs sur ce réseau (pc, switches, imprimantes etc etc...) enregistrer les logs sur 1 an me permettra de répondre a n'importe quelle question sur un eventuel problème sur le réseau en cas d'audit, sachant que nous sommes pénalisés en cas d'indisponibilité d'un seul element ... voila voila smile

Hors ligne

#11 Le 04/10/2019, à 11:41

bruno

Re : Script de sauvegarde avec rsync

Cela ne répond pas à ma question sur la nécessité d'une copie wink Mais tant pis…
Je rappelle au passage que la conservation des logs se règle avec logrotate

Hors ligne