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