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.

Nouvelle section Wiki pour poster des messages au sujet de la documentation, voir si besoin comment l'utiliser.

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

En 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

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.


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

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.

En ligne