Bonjour,

J'ai écris un script simple de backup entre deux machines distante. Il fonctionne à merveille. Le problème que j'ai c'est que le backup est long, 28h pour environ 400G de données.

Résumé de la partie principale du script :
-> Si le tar.gz n'exite pas, je fais le rsync, je tar, puis je gz.
-> S'il existe, je gz -d, je tar -x, je met à jour avec rsync puis je retar et regz.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# /bin/bash
 
# Creation des fichiers temporaires
 
touch /data/export/backup/academic.txt
touch /data/export/backup/mail.txt
 
# Recherche des personnes appartenant au groupe academic
# Résultat mis dans le fichier academic.txt
 
ldapsearch -h machin -p 389 -D "cn=Admin" -w xxxxx -b ou=people,dc=conception,dc=arcsis,dc=org gidNumber=80000 | sed -n 's/^uid: //p' > /data/export/backup/academic.txt
 
 
# Début de la boucle qui lit les noms un par un (ligne par ligne)
 
while read line
do
 
# Si le dossier de la personne n'existe pas, le créer
 
	if [ ! -e "/data/export/backup/academic/$line" ]; then
		mkdir /data/export/backup/academic/$line
	fi
# Si c'est le premier backup, création du tar.gz 
 
	if [ ! -e "/data/export/backup/academic/$line/$line.tar.gz" ]; then
		echo "Début du backup de $line"
		/usr/local/bin/rsync -r -t -o -g -v --progress -c -z -i -s /home/$line /data/export/backup/academic/$line/
 
# Si la commande précédente comporte une erreure 
# elle est reporter dans le fichier mail.txt qui sera envoyé à la fin
 
		if [ $? = 0 ]; then 
			echo "Les données de l'utilisateur $line ont bien été mise à jour" >> /data/export/backup/mail.txt
		else
			echo "Une erreur est survenue lors de la mise à jour des donnée de $line" >> /data/export/backup/mail.txt
		fi	
#
 
		tar -cvf /data/export/backup/academic/$line/$line.tar /data/export/backup/academic/$line/$line
		gzip /data/export/backup/academic/$line/$line.tar
		rm -rf /data/export/backup/academic/$line/$line
		echo "Taille fichier : " ; du -sh /data/export/backup/academic/$line/$line.tar.gz >> /data/export/backup/mail.txt
 
 
 
# Si le fichier de backup existe déjà : On décompresse -> fait une mise à jour
# -> recompresse -> supprime le .tar 
 
	else
		echo "Début de la mise à jour de $line"
		gzip -vd /data/export/backup/academic/$line/$line.tar.gz
		tar -xvf /data/export/backup/academic/$line/$line.tar
		/usr/local/bin/rsync -r -t -o -g -v --progress -c -z -i -s /home/$line /data/export/backup/academic/$line/
#
		if [ $? = 0 ]; then
			echo "Les données de l'utilisateur $line ont bien été mise à jour" >> /data/export/backup/mail.txt 
		else
                	echo "Une erreur est survenue lors de la mise à jour des donnée de $line" >> /data/export/backup/mail.txt 
        	fi
#
		tar -cvf /data/export/backup/academic/$line/$line.tar /data/export/backup/academic/$line/$line
		gzip /data/export/backup/academic/$line/$line.tar
		rm -rf /data/export/backup/academic/$line/$line
 
		echo "Taille fichier : " ; du -sh /data/export/backup/academic/$line/$line.tar.gz >> /data/export/backup/mail.txt
	fi
done < /data/export/backup/academic.txt
 
# Envoi des information de backup
 
mail -s "Résumé du Backup du $(date)" root < /data/export/backup/mail.txt
 
# Supression des fichiers temporaire
 
rm /data/export/backup/academic.txt
rm /data/export/backup/mail.txt
D'après mes observations, ce serait le tar et le zip (détar et dézip) qui prendrais le plus de temps. Aurait-il une alternative plus optimisé permettant de comprésser plus rapidement. Je veux que ça reste sous forme de script, pas de logiciel ou autre.