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
Pour mesurer la durée d'exécution, j'ai un truc simple:
SECONDS=0
au début du script puis
echo ${SECONDS}
à la fin.

Le bash va gratuitement et sans frais caché compter les secondes pour
toi ;) (il le fait tout le temps en fait, en mettant '0' on ne fait
qu'initialiser le compteur).

Et pour enfoncer le clou, les accolades permettent de :
1/ clairement délimiter les variables
  echo ${var}iable
  echo $variable
2/ faire des trucs
  mettre en majuscules ${var^^} ou minuscules ${var,,}
  faire des remplacements ${var/a/b} (remplace 'a' par 'b', à la sed)

Maintenant, allez en paix !

R. Daneel Olivaw
The Human Robot Inside.

Le 2016-02-05 08:21, Ille a écrit :
> 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