#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
--
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)
#4 Le 03/10/2019, à 10:52
- Abysses17
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.
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
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)
#8 Le 03/10/2019, à 15:05
- Abysses17
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.
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 ?
#10 Le 04/10/2019, à 07:08
- Abysses17
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 ?
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
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 Mais tant pis…
Je rappelle au passage que la conservation des logs se règle avec logrotate