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.

#26 Le 26/01/2024, à 10:54

Watael

Re : [Résolu] Script rsync pour sauvegarde en 3 clics

krodelabestiole a écrit :

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

En 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.


Watael a écrit :

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.

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

En 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