Léa-Linux & amis :   LinuxFR   GCU-Squad   Zarb.Org   GNU
Archive de la liste aide - [Aide] Avis sur script bash pour sauvegarde complète d'un système
Merci d'avoir regarder mon script.
Je débute en Bash, je ne maîtrise pas du tout, donc j'assemble les 
connaissances glanées sur le net en fonction des besoins.
Je vais reprendre le script lundi
Pour /usr/bin/time je ne connaissais pas!

question:
backupdir=$mount_point'/'$HOSTNAME
backupdir="${mount_point}/${HOSTNAME}"

pourquoi mettre les {} sur les variables?


On 05/02/2016 14:21, Ille wrote:
> Pourquoi crées-tu ton chrono? la commande time est là pour ça :)
> lance ton script par la commande suivante:
> /usr/bin/time -f "Temps de sauvegarde: %E" monbackup.sh
>
> Tu dois utiliser le chemin absolu, sinon bash utilisera sa commande
> interne en lieu et place de la commande time du système
>
>> script:
>>
>> #!/bin/bash
>>
>> mysql_pwd="xxxxxxxxx"
>> dirtobackup=("/root" "/etc" "/home")
>   ajoute ici:
> backuphost="sshbackup at xxxxxxxxx.me"
> rsync_opts="-aq --no-o --no-g --delete"
>
>> mount_point='/mnt'
> Pourquoi des simples quote?
>
>> mount_cmd="sshfs sshbackup at xxxxxxxxxx.me:"
> inutile
>> #cmd_montage='mount -t /dev/sdb2
>>
>>
>> backupdir=$mount_point'/'$HOSTNAME
>>
> backupdir="${mount_point}/${HOSTNAME}"
>> date_start=$(date +%s) #chrono
>>
>>
>> echo "Montage de la partition de sauvegarde avec la commande:"
>> mount_cmd=$mount_cmd' '$mount_point
>> echo $mount_cmd
>> eval $mount_cmd
> Ouh, c'est pas très beau ça... Tu n'as pas besoin d'eval...
> sshfs ${backuphost}: ${mount_point}
>>
>> #verifie si la partition de sauvegarde est bien montée
>> mountpoint $mount_point
> Attention, ici tu vérifies juste que sshfs n'as pas renvoyé d'erreur,
> tu ne peux rien dire sur le fait que la partition soit montée ou non
> (elle peut être déjà montée)
> Le mieux, c'est de faire le check de la partition avant de lancer
> sshfs, par exemple avec:
> if mount|grep -q "$mount_point"; then
>   # $mount_point est déjà monté
>   echo "$mount_point est déjà monté! => FIN"
>   exit 1
> else
>   sshfs ${backuphost}: ${mount_point}
>   if [ $? -ne 0 ];then
>      echo "Echec du montage sshfs => FIN"
>      exit 1
>   fi
> fi
>   
>> #verifie si le dossier de sauvegarde pour cette machine existe sur la
>> partition de sauvegarde
>> if [ -d $backupdir ];then
>>     echo "Le dossier de sauvegarde existe bien sur la machine
>> distante";
>>
>> else
>>     echo "Creation du rerpertoire de sauvegarde";
>>     mkdir $backupdir
>> fi
>>
>>
>>
>> #sauvegarde des repertoires avec rsync
>> for i in ${!dirtobackup[@]} ;do
>>     echo "Sauvegarde repertoire "${dirtobackup[i]};
>>
>>     # Rsync ajout des options --no-o et --no-g pour eviter les
>> problèmes de chmod sur les fichiers transférés
>>     rsync -aq --no-o --no-g --delete  ${dirtobackup[i]} $backupdir
>> done
>>
> Tu n'as pas besoin de mapper ton array comme un hashage :)
> Ici, utilise plutôt
> for i in "${dirtobackup[@]}"; do
>    echo "Sauvegarde de ${i}"
>    rsync ${rsync_opts} ${i} ${backupdir}
> done
>
>> echo 'Sauvegarde de la liste des paquets APT'
>> dpkg --get-selections > $backupdir"/APT-paquets-instales"
>>
>>
>> echo 'Sauvegarde des bases Mysql'
>> mysqldump -u root -p$mysql_pwd --all-databases | bzip2 -c >
>> $backupdir/"Mysql.sql.bz2"
> Ici aussi, ça dépend du nombre de bases que tu dois sauvegarder, mais
> je pense qu'il est préférable de les traiter une
> par une dans des archives séparées avec une autre boucle for.
>
>>
>> date_end=$(date +%s)
>>
>> echo "Temps de sauvegarde:"
>> echo $(($date_end-$date_start)) "Sec"
>>
>> echo "Taille de la sauvegarde:"
>> du -hs $backupdir
>>
>> echo "demontage de la partition"
>> fusermount -u $mount_point
> Assure-toi que c'est bien démonté :)
>   if [ $? -ne 0 ];then
>      echo "Echec du démontage => FIN"
>      exit 1
>   fi
>
>
> Amicalement,
> Ille
> _______________________________________________
> Aide mailing list
> Aide at lea-linux.org
> http://lists.lea-linux.org/listinfo/aide


Serveur hébergé par ST-Hebergement et Lost-Oasis / IRC hébergé par FreeNode / NS secondaire hébergé par XName
Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons