#26 Le 26/01/2024, à 10:54
- Watael
Re : [Résolu] Script rsync pour sauvegarde en 3 clics
tu veux que je déplace le sujet dans Vos développements libres ?
plutôt sous "Trucs, astuces et scripts utiles".
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#27 Le 26/01/2024, à 12:58
- geole
Re : [Résolu] Script rsync pour sauvegarde en 3 clics
Bonjour
--exclude=Photo/* --exclude=dwhelper/* --exclude=Documents/* --exclude=Musique/* --exclude=Téléchargements/* --exclude=Ventoy/*
Lorsque je vois tant d'exclude, je pense qu'il est mieux de mettre un fichier contenant la liste des exclusions qui est plus facile à modifier par la suite si besoin.
Dernière modification par geole (Le 26/01/2024, à 12:59)
Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit, utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248
Hors ligne
#28 Le 26/01/2024, à 13:16
- krodelabestiole
Re : [Résolu] Script rsync pour sauvegarde en 3 clics
modération : déplacement de Terminal, scripts et ligne de commande vers Vos développements libres.
plutôt sous "Trucs, astuces et scripts utiles".
ce script est la création de Frankkunst, il a tout à fait sa place dans Vos développements libres.
nouveau forum ubuntu-fr on en parle là : refonte du site / nouveau design
profil - sujets récurrents - sources du site
Hors ligne
#29 Le 26/01/2024, à 13:54
- geole
Re : [Résolu] Script rsync pour sauvegarde en 3 clics
Améliorations à prévoir. tester la nullité de la variable avant de voir si bien installé
~$ resultest=`dpkg -l | grep -i msmtp | cut -b 1-2`
a@a:~$ echo $resultest
a@a:~$ if [ $resultest != "ii" ]
then
echo -e "Ce script nécessite l'installation du paquet \" msmtp \" ! Vous pouvez l'installer en tapant la commande :\n\t\t\t \"sudo apt install msmtp\""
read -p "Appuyer sur \"Entree\" pour quitter"
exit 121 ; fi
bash: [: !=: unary operator expected
a@a:~$
et mettre un sleep pour avoir le temps de lire la réponse ou un read
if [ -z "${resultest}" ]; then echo "Ce script nécessite l'installation du paquet msmtp"; sleep 1m; exit; fi
Try 'sleep --help' for more information.
#sleep: invalid time interval ‘0,1’
Try 'sleep --help' for more information.
#sleep: invalid time interval ‘0,1’
Try 'sleep --help' for more information.
#sleep: invalid time interval ‘0,1’
Try 'sleep --help' for more information.
#sleep: invalid time interval ‘0,1’
Try 'sleep --help' for more information.
certainement un point.
La sauvegarde à échoué !... Attention à la conjugaison. et ce n'est pas pratique pour en connaître la cause
La sauvegarde a échoué !... consulter le fichier $HOME/echouage.txt et
rsync -aPv --delete $origi $desti >>/home/$USER/temp/tempMailSauv.log 2>>$HOME/echouage.txt
Si mise sous temp, pense à ne pas le supprimer lorsqu'il y a des erreurs ou met-le dans le mail en pièce jointe.
Tu as oublié de vérifier/créer le répertoire temp.. ==> Ce qui entraîne une boucle dans la terminaison.
a@a:~$ cat echouage.txt
rsync: [generator] recv_generator: mkdir "/media/a/Sauvegarde/SauvDocuments" failed: Permission denied (13)
*** Skipping any contents from this failed directory ***
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1338) [sender=3.2.7]
a@a:~$
Je m'en doutais très fortement.... Mais autant le voir noir sur blanc.
et finalement
a@a:~$ ./Save.sh
Veuillez patienter, sauvegarde de : Documents en cours
##
Envois de mail de comfirmation !
#msmtp: account default not found: no configuration file available
Il y a un m à remplacer
Sauvegarde de : Documents
le 26-01-2024_15:57
sending incremental file list
doc.doc
50 100% 0.00kB/s 0:00:00
50 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/2)
sent 170 bytes received 35 bytes 410.00 bytes/sec
total size is 50 speedup is 0.24
La sauvegarde a réussi !
.
Dernière modification par geole (Le 26/01/2024, à 15:58)
Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit, utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248
Hors ligne
#30 Le 02/02/2024, à 18:56
- Frankkunst
Re : [Résolu] Script rsync pour sauvegarde en 3 clics
Bonjour à tous,
voici la nouvelle version avec prise en compte de vos remarques :
#!/bin/bash
##-------------------------------------------------------------*****sauvegarde.sh*****----------------------------------------------------------------
#-------------------------------------------------------Script de synchronisation/sauvegarde----------------------------------------------------------
#-------------------------------------------------------------avec utilisation de rsync---------------------------------------------------------------
#-------------------------------------------------------------Frankkunst - 31-01-2024-----------------------------------------------------------------
#
## ## contrôle dépendances ##
defautdependance () {
cat <<eof
*** sauvegarde.sh *** auteur : Frankkunst version 02.2024
Ce script nécessite l'installation des paquets "msmtp","msmtp-mta" et "s-nail"
Pour intaller ces paquets, taper la commande :
"sudo apt install msmtp msmtp-mta s-nail"
Et la création du fichier de configuration "msmtprc" dans dans le réperoire :
"/home/$USER/"
Pour créer le fichier "msmtprc" suivre la procédure sur cette page :
"https://doc.ubuntu-fr.org/msmtp"
Adapter les paramètres selon l'opérateur.
N'oublier pas de cacher ce fichier (car il contient votre adresse mail et vatre mot de passe) en tapant la commande :
"chmod 600"
Appuyer sur "Entree" pour quitter
eof
}
mkdir -p /home/$USER/temp
resultest=`dpkg -l | grep -i "msmtp " | cut -b 1-2`
resultest1=`dpkg -l | grep -i msmtp-mta | cut -b 1-2`
resultest2=`dpkg -l | grep -i s-nail | cut -b 1-2`
if [ -z $resultest ] || [ $resultest != "ii" ] || [ -z $resultest1 ] || [ $resultest1 != "ii" ] || [ -z $resultest2 ] || [ $resultest2 != "ii" ]
then
zenity --title=INFORMATION --text-info --width="850" --height="500" --filename <(defautdependance) 2>/dev/null
exit 121
fi
#-------------------------------------------------------------## Entrée ##----------------------------------------------------------------------------
declare -a tabldecis=( "Musique" "Home" "Documents" "DataDeces" "Photo" "dwhelper" ) # choix dossiers à sauvegarder
decision=$(zenity --list --text="<b>Que voulez-vous sauvegarder ?</b>" --column="décision" ${tabldecis[*]} 2>/dev/null)
origi="/home/$USER/$decision/" # localisation source
disque="/media/$USER/Sauvegarde" # disque de sauvegarde
desti="$disque/Sauv$decision" # localisation destination
adrmail="tartenpion@zero.nn" # adresse mail du destinataire
fiche=$(date +%d-%m-%Y_%H:%M) # date
#--------------------------------------------------------## Contrôle disque de Sauvegarde ##----------------------------------------------------------
if [ ! -d $disque ] ; then
echo -e "Impossible d'effectuer la sauvegarde, le dossier :\n\t\t\033[1;37m \"$disque\" \033[0;37mn'existe pas ou n'est pas monté !"
read -p "Appuyer sur \"Entree\" pour quitter"
exit 122 ; fi
#---------------------------------------------------------## barre d'avancement ##--------------------------------------------------------------------
n=0
barre() {
BOUCLE=$(cat /home/$USER/temp/finboucle.txt 2>/dev/null)
if [[ "$BOUCLE" == "ok" ]] ; then return 1 ; fi 2>/dev/null
while [ $n -lt 15 ]
do
echo -ne "\033[0;32m#"
((n=n+1))
sleep 0,1
if [ $n -eq 15 ] ; then echo -ne "\033[2K\r" ; fi
done
n=0
barre
}
#-------------------------------------------------------## fonctions de sauvegardes ##----------------------------------------------------------------
envoimail() { # fonction mail de confirmation
if [ $CodeSortie -eq 0 ]
then
echo -e "\v\nLa sauvegarde a réussi !" >>/home/$USER/temp/tempSauv.log
else
echo -e "\v\nLa sauvegarde a échoué !" >>/home/$USER/temp/tempSauv.log
echo -e "\033[1;37m\v\n\tLa sauvegarde a échoué !...\n\n\tVoici les erreurs :\n\t"
cat /home/$USER/temp/Err.log
sleep 10
fi
echo -e "\033[1;37m\v\tEnvois de mail de confirmation !" & cat /home/$USER/temp/tempSauv.log | s-nail -s "Résultat de sauvegarde" -a /home/$USER/temp/Sauv.log $adrmail
rm /home/$USER/temp/Sauv.log
rm /home/$USER/temp/tempSauv.log
}
sauv() { # fonction sauvegarde "dossier" du home/utilisateur
echo -e "Veuillez patienter, sauvegarde de \"$decision\" en cours"
echo -e "\vSauvegarde de : $decision\v\n\tle $fiche\v\n" >/home/$USER/temp/tempSauv.log
rsync -av --progress --delete $origi $desti >>/home/$USER/temp/Sauv.log 2>/home/$USER/temp/Err.log
CodeSortie=$?
echo ok >/home/$USER/temp/finboucle.txt
envoimail
}
sauvhome() { # fonction sauvegarde de "home/utilisateur"
echo -e "Veuillez patienter, sauvegarde de \"$decision\" en cours"
echo -e "\vSauvegarde de : $decision\v\n\tle $fiche\v\n" >>/home/$USER/temp/tempSauv.log
rsync -av --progress --delete --exclude=DataDeces/* --exclude=Photo/* --exclude=dwhelper/* --exclude=Documents/* --exclude=Musique/* --exclude=Téléchargements/* --exclude=Ventoy/* /home/$USER/ $desti >>/home/$USER/temp/Sauv.log 2>/home/$USER/temp/Err.log
CodeSortie=$?
echo ok >/home/$USER/temp/finboucle.txt
envoimail
}
#--------------------------------------------------------## lancement tache ##---------------------------------------------------------------------------
case $decision in
Home ) barre & sauvhome ; wait ;;
Documents | DataDeces | Photo | Musique | dwhelper ) barre & sauv ; wait ;;
* ) echo -e "\033[0;31mAbandon !\033[1;37m" ; read -p "Appuyer sur \"Entree\" pour quitter" ; exit 123
esac
rm /home/$USER/temp/finboucle.txt 2>/dev/null
exit 0
Bien à vous
C'est en forgeant que l'on devient forgerons ...
et
...petit à petit l'oiseau fait son nid !
Hors ligne
#31 Le 02/02/2024, à 20:13
- Watael
Re : [Résolu] Script rsync pour sauvegarde en 3 clics
- Gare aux guillemets ! Ils sont très facultatifs entre crochets doubles, mais ils sont indispensables pour les tests simples (test, et crochets simples) !
- tu dois pouvoir te débarrasser de defautdependance en utilisant un heredoc
- toutes les déclarations (variables et fonctions) devraient être au début du script.
- l'indentation n'est pas obligatoire, mais c'est quand même un plus quand on prévoit d'être relu.
et apprend à utiliser printf pour tous les affichages formatés.
...
Dernière modification par Watael (Le 02/02/2024, à 20:14)
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne