Evolution script sauvegarde-2

Demande d'aide : c'est ici.
Avatar de l’utilisateur
DbFr871
Membre très actif
Membre très actif
Messages : 1140
Inscription : 17 mai 2016, 20:48
Localisation : Nègrepelissien
Contact :
Status : Hors-ligne

MicP a écrit : 22 sept. 2017, 15:26
…et si tu recommences le lancement du script, il y aura pratiquement plus rien en ligne …
C'est effectivement ce que l'on peut constater dans le deuxième bloc CODE de mon précédent message
dont j'ai transmis l'intégralité du retour de commande rsync
.
Ah... c'est loin d'être le cas chez mi...

J'vais y regarder de plus près ce qui se passe... :017:
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
Avatar de l’utilisateur
DbFr871
Membre très actif
Membre très actif
Messages : 1140
Inscription : 17 mai 2016, 20:48
Localisation : Nègrepelissien
Contact :
Status : Hors-ligne

Il y a une chose qui se passe et que je n'arrive pas à comprendre, aussi j'ai simplifié le script, le voici :

Code : Tout sélectionner

#!/bin/bash

# Déclaration des Variables
VERT="\\033[1;32m"
STNDT="\\033[0;39m"
ROUGE="\\033[1;31m"
ROSE="\\033[1;35m"
BLEU="\\033[1;34m"
BLANC="\\033[0;02m"
JAUNE="\\033[1;33m"
CYAN="\\033[1;36m"
backup="/home/bernard/bin/Sauvegardes/backuperror0Del-portable_Sauv1T_500go_SSD224Go.log"

#=======
echo -e "${BLEU}Exécuter la sauvegarde ? [o/N]"
read -sn1
[[ $REPLY =~ [yYoO] ]] || { echo -e "${ROUGE}Abandon sauvegarde.${STNDT}\nSortie Sauvegarde"; exit; }

echo -e "${VERT}Sauvegarde lancée !\n${JAUNE}----\nLancement sauvegarde $(date +'le : '%d-%m-%Y' à '%T)"

#SSD224Go=====
mountPnt="/media/bernard/SSD224Go"
repSauvg="${mountPnt}"
msgColor="${CYAN}"

if $(mountpoint "${mountPnt}" -q); then
    echo -e "${msgColor}-----------\nSynchronisation en cours...\n ------------"
    repertoire="/home/bernard"
    rsync --archive --partial --progress --delete-during --stats  \
       --include="${repertoire}/MesScripts"                         \
    "${repSauvg}"  2>> "${backup}"
else
    echo "Attention SSD224Go ${mountPnt} absent"
fi

#========
if [ -s "${backup}" ]; then
    echo -e $STNDT "Sauvegarde terminée : $(date +%d-%m-%Y) à $(date +%T)\n"
else
    echo -e $STNDT "Procédure interrompue par l'utilisateur : $(date +%d-%m-%Y) à $(date +%T)"
fi

read -p "Pour fermer le programme de sauvegarde : Ctrl + C"
# ---- fin du script ----
.

malgré que j'ai modifié le nom de (repPerso="/home/bernard") par (repertoire="/home/bernard") parce que cela se "rapprochait" trop de mon DocumentsPerso, j'obtiens toujours ceci après le lancement du script :
root@bernard-portable:/home/bernard# /home/bernard/MesScripts/Sauvegarde_portable_Sauv1T_500go_SSD224Go_Test1
Exécuter la sauvegarde ? [o/N]
Sauvegarde lancée !
----
Lancement sauvegarde le : 25-09-2017 à 09:43:12
-----------
Synchronisation en cours...
------------
sending incremental file list
drwxrwxrwx 4,096 2017/09/05 15:06:46 SSD224Go
drwxrwxrwx 12,288 2017/09/21 15:43:58 SSD224Go/DocumentsPerso
drwxrwxrwx 4,096 2016/10/01 10:41:34 SSD224Go/DocumentsPerso/A-TESTER
-rwxrwxrwx 8,420 2016/06/11 07:28:47 SSD224Go/DocumentsPerso/A-TESTER/ChauffageEco.odt
drwxr-xr-x 4,096 2017/09/09 12:01:15 SSD224Go/DocumentsPerso/AMD
-rw-r--r-- 765,567 2017/09/09 12:01:15 SSD224Go/DocumentsPerso/AMD/AMD Ryzen 7 1700 - Processeur 3,0 GHz (3,7 GHz Turbo) - Socket AM4_ Amazon.it_ Ordinateur.html
drwx------ 16,384 2017/09/09 12:01:15 SSD224Go/DocumentsPerso/AMD/AMD Ryzen 7 1700 - Processeur 3,0 GHz (3,7 GHz Turbo) - Socket AM4_ Amazon.it_ Ordinateur_files
...

.
et ça défile.. :017:
obligé de faire Ctrl+C pour stopper le script... :icon_e_surprised:

Et, en montrant ce que le script fait, je vois qu'il indique aussi les divers droits de chaque dossier... :017:
Troublant, non ? :017: :017: :017:
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

Bonjour

En supposant que tu ne veuille sauvegarder que l'arborescence du répertoire /home/bernard/MesScripts avec tous ses fichiers
essaye plutôt comme ça :

Code : Tout sélectionner

#!/bin/bash

# Déclaration des Variables
VERT="\\033[1;32m"
STNDT="\\033[0;39m"
ROUGE="\\033[1;31m"
ROSE="\\033[1;35m"
BLEU="\\033[1;34m"
BLANC="\\033[0;02m"
JAUNE="\\033[1;33m"
CYAN="\\033[1;36m"
backup="/home/bernard/bin/Sauvegardes/backuperror0Del-portable_Sauv1T_500go_SSD224Go.log"

#=======
echo -e "${BLEU}Exécuter la sauvegarde ? [o/N]"
read -sn1
[[ $REPLY =~ [yYoO] ]] || { echo -e "${ROUGE}Abandon sauvegarde.${STNDT}\nSortie Sauvegarde"; exit; }

echo -e "${VERT}Sauvegarde lancée !\n${JAUNE}----\nLancement sauvegarde $(date +'le : '%d-%m-%Y' à '%T)"

#SSD224Go=====
mountPnt="/media/bernard/SSD224Go"
repSauvg="${mountPnt}"
msgColor="${CYAN}"

if $(mountpoint "${mountPnt}" -q); then
    echo -e "${msgColor}-----------\nSynchronisation en cours...\n ------------"
    repertoire="/home/bernard"
    rsync --archive --partial --progress --delete-during --stats  \
          --include="MesScripts/***"                              \
          --exclude="*"                                           \
    "${repertoire}/" "${repSauvg}/"  2>> "${backup}"
else
    echo "Attention ${mountPnt} absent"
fi

#========
if [ -s "${backup}" ]; then
    echo -e $STNDT "Sauvegarde terminée : $(date +%d-%m-%Y) à $(date +%T)\n"
else
    echo -e $STNDT "Procédure interrompue par l'utilisateur : $(date +%d-%m-%Y) à $(date +%T)"
fi

read -p "Pour fermer le programme de sauvegarde : Ctrl + C"
# ---- fin du script ----
Avatar de l’utilisateur
DbFr871
Membre très actif
Membre très actif
Messages : 1140
Inscription : 17 mai 2016, 20:48
Localisation : Nègrepelissien
Contact :
Status : Hors-ligne

:006: je manque de correction aujourd'hui... :wink:
MicP a écrit : 25 sept. 2017, 14:21 Bonjour

En supposant que tu ne veuille sauvegarder que l'arborescence du répertoire /home/bernard/MesScripts avec tous ses fichiers
essaye plutôt comme ça :

Code : Tout sélectionner

#!/bin/bash

# Déclaration des Variables
VERT="\\033[1;32m"
STNDT="\\033[0;39m"
ROUGE="\\033[1;31m"
ROSE="\\033[1;35m"
BLEU="\\033[1;34m"
BLANC="\\033[0;02m"
JAUNE="\\033[1;33m"
CYAN="\\033[1;36m"
backup="/home/bernard/bin/Sauvegardes/backuperror0Del-portable_Sauv1T_500go_SSD224Go.log"

#=======
echo -e "${BLEU}Exécuter la sauvegarde ? [o/N]"
read -sn1
[[ $REPLY =~ [yYoO] ]] || { echo -e "${ROUGE}Abandon sauvegarde.${STNDT}\nSortie Sauvegarde"; exit; }

echo -e "${VERT}Sauvegarde lancée !\n${JAUNE}----\nLancement sauvegarde $(date +'le : '%d-%m-%Y' à '%T)"

#SSD224Go=====
mountPnt="/media/bernard/SSD224Go"
repSauvg="${mountPnt}"
msgColor="${CYAN}"

if $(mountpoint "${mountPnt}" -q); then
    echo -e "${msgColor}-----------\nSynchronisation en cours...\n ------------"
    repertoire="/home/bernard"
    rsync --archive --partial --progress --delete-during --stats  \
          --include="MesScripts/***"                              \
          --exclude="*"                                           \
    "${repertoire}/" "${repSauvg}/"  2>> "${backup}"
else
    echo "Attention ${mountPnt} absent"
fi

#========
if [ -s "${backup}" ]; then
    echo -e $STNDT "Sauvegarde terminée : $(date +%d-%m-%Y) à $(date +%T)\n"
else
    echo -e $STNDT "Procédure interrompue par l'utilisateur : $(date +%d-%m-%Y) à $(date +%T)"
fi

read -p "Pour fermer le programme de sauvegarde : Ctrl + C"
# ---- fin du script ----
.
J'ai modifié le script et ça fonctionne, aussi, j'ai ajouté un répertoire, le " DocumentsPerso ", et là, aucune sauvegarde de " DocumentsPerso " ne s'effectue... :017:

voici le script modifié :

Code : Tout sélectionner

#!/bin/bash
# Déclaration des Variables
VERT="\\033[1;32m"
STNDT="\\033[0;39m"
ROUGE="\\033[1;31m"
ROSE="\\033[1;35m"
BLEU="\\033[1;34m"
BLANC="\\033[0;02m"
JAUNE="\\033[1;33m"
CYAN="\\033[1;36m"
backup="/home/bernard/bin/Sauvegardes/backuperror0Del-portable_Sauv1T_500go_SSD224Go.log"
#=======
echo -e "${BLEU}Exécuter la sauvegarde ? [o/N]"
read -sn1
[[ $REPLY =~ [yYoO] ]] || { echo -e "${ROUGE}Abandon sauvegarde.${STNDT}\nSortie Sauvegarde"; exit; }

echo -e "${VERT}Sauvegarde lancée !\n${JAUNE}----\nLancement sauvegarde $(date +'le : '%d-%m-%Y' à '%T)"
#SSD224Go=====
mountPnt="/media/bernard/SSD224Go"
repSauvg="${mountPnt}"
msgColor="${CYAN}"
if $(mountpoint "${mountPnt}" -q); then
    echo -e "${msgColor}-----------\nSynchronisation en cours...\n ------------"
    repertoire="/home/bernard"
    rsync --archive --partial --progress --delete-during --stats  \
          --include="MesScripts/***"                              \
          --include="DocumentsPerso/***"                              \
          --exclude="*"                                           \
    "${repertoire}/" "${repSauvg}/"  2>> "${backup}"
else
    echo "Attention SSD224Go ${mountPnt} absent"
fi
#========
if [ -s "${backup}" ]; then
    echo -e $STNDT "Sauvegarde terminée : $(date +%d-%m-%Y) à $(date +%T)\n"
else
    echo -e $STNDT "Procédure interrompue par l'utilisateur : $(date +%d-%m-%Y) à $(date +%T)"
fi

read -p "Pour fermer le programme de sauvegarde : Ctrl + C"
# ---- fin du script ----
.

j'ai testé plusieurs formes de fin de commande sur --include= avec et sans " / " ainsi que les " * " rien n'y fait sur le dossier "DocumentsPerso", il est "oublié", comme il est visible sur le résultat de la sauvegarde :

root@bernard-portable:/home/bernard# /home/bernard/MesScripts/Sauvegarde_portable_Sauv1T_500go_SSD224Go_Test2
Exécuter la sauvegarde ? [o/N]
Sauvegarde lancée !
----
Lancement sauvegarde le : 25-09-2017 à 17:21:11
-----------
Synchronisation en cours...
------------
sending incremental file list
MesScripts/
MesScripts/Sauvegarde_portable_Sauv1T_500go_SSD224Go_Test2
1,504 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=2/81421)

Number of files: 81,421 (reg: 73,699, dir: 7,713, link: 9)
Number of created files: 0
Number of deleted files: 0
Number of regular files transferred: 1
Total file size: 84,449,104,317 bytes
Total transferred file size: 1,504 bytes
Literal data: 1,504 bytes
Matched data: 0 bytes
File list size: 65,536
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 1,977,025
Total bytes received: 8,141

sent 1,977,025 bytes received 8,141 bytes 1,323,444.00 bytes/sec
total size is 84,449,104,317 speedup is 42,540.07
Sauvegarde terminée : 25-09-2017 à 17:21:12

Pour fermer le programme de sauvegarde : Ctrl + C

.

Je tente de m'y "retrouver" avec le man de rsync mais je ne trouve pas la signification de plusieurs * il n'y en a que pour 2, et si je le fais sur le script, ça fonctionne mal...

Il a dû y avoir une évolution, mais... où ?
ce que je trouve date... :icon_e_surprised:
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

Le seul fichier qui ait été créé et qui ait eu besoin d'être transférer pour cette mise à jour depuis la dernière sauvegarde
est le fichier : /home/bernard/MesScripts/Sauvegarde_portable_Sauv1T_500go_SSD224Go_Test2

Mais, vu le retour de la commande rsync que tu as lancée,
il semble que rien d'autre n'ait eu besoin d'être mis à jour entre l'arborescence et les fichiers
du répertoire source :    /home/bernard/DocumentsPerso/
et ceux du répertoire cible :  /media/bernard/SSD224Go/DocumentsPerso/

Essaye encore une fois après avoir créé un nouveau fichier de test dans /home/bernard/DocumentsPerso/

=======
DbFr871 a écrit :…je ne trouve pas la signification de plusieurs *…
'man rsync' a écrit :

Code : Tout sélectionner

…
       o      a trailing "dir_name/***" will match both the directory (as if "dir_name/" had  been  specified)  and  everything  in  the
              directory (as if "dir_name/**" had been specified).  This behavior was added in version 2.6.7.
…
Avatar de l’utilisateur
DbFr871
Membre très actif
Membre très actif
Messages : 1140
Inscription : 17 mai 2016, 20:48
Localisation : Nègrepelissien
Contact :
Status : Hors-ligne

:icon_biggrin:
MicP a écrit : 25 sept. 2017, 19:30 Le seul fichier qui ait été créé et qui ait eu besoin d'être transférer pour cette mise à jour depuis la dernière sauvegarde
est le fichier : /home/bernard/MesScripts/Sauvegarde_portable_Sauv1T_500go_SSD224Go_Test2

Mais, vu le retour de la commande rsync que tu as lancée,
il semble que rien d'autre n'ait eu besoin d'être mis à jour entre l'arborescence et les fichiers
du répertoire source :    /home/bernard/DocumentsPerso/
et ceux du répertoire cible :  /media/bernard/SSD224Go/DocumentsPerso/

Essaye encore une fois après avoir créé un nouveau fichier de test dans /home/bernard/DocumentsPerso/

=======
DbFr871 a écrit :…je ne trouve pas la signification de plusieurs *…
'man rsync' a écrit :

Code : Tout sélectionner

…
       o      a trailing "dir_name/***" will match both the directory (as if "dir_name/" had  been  specified)  and  everything  in  the
              directory (as if "dir_name/**" had been specified).  This behavior was added in version 2.6.7.
…
.
ça marche...
tellement l'habitude de visualiser les répertoires et dossiers qui s'affichent, que j'attendais pareil... :icon_e_surprised: :wink: et ben... non !

lorsque c'est identique, il en écrit le minimum... :icon_biggrin:
fainéant, tout comme mi... :wink:

Aller, je modifie le reste des répertoires et dossiers, et fais le retour... :wink:
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
Avatar de l’utilisateur
DbFr871
Membre très actif
Membre très actif
Messages : 1140
Inscription : 17 mai 2016, 20:48
Localisation : Nègrepelissien
Contact :
Status : Hors-ligne

MicP a écrit : 20 sept. 2017, 13:09 Bonjour
...
===
et tu pourrais aussi remplacer :

Code : Tout sélectionner

        rsync -a -P --del --stats /home "${repSauvg}"  2>> "${backup}"
        rsync -a -P --del --stats /etc  "${repSauvg}"  2>> "${backup}"
        rsync -a -P --del --stats /var  "${repSauvg}"  2>> "${backup}"

par une seule commande rsync :

Code : Tout sélectionner

        rsync --archive --partial --progress --delete-during --stats  \
            --include="/home"                                         \
            --include="/etc"                                          \
            --include="/var"                                          \
        "${repSauvg}"  2>> "${backup}"
...
.
J'ai tenté de "m'inspirer" de ta suggestion pour modifier le script ainsi, pour les deux autres supports et voici le script :

Code : Tout sélectionner

#!/bin/bash
# Déclaration des Variables
VERT="\\033[1;32m"
STNDT="\\033[0;39m"
ROUGE="\\033[1;31m"
ROSE="\\033[1;35m"
BLEU="\\033[1;34m"
BLANC="\\033[0;02m"
JAUNE="\\033[1;33m"
CYAN="\\033[1;36m"
backup="/home/bernard/bin/Sauvegardes/backuperror0Del-portable_Sauv1T_500go_SSD224Go.log"
#=======
echo -e "${BLEU}Exécuter la sauvegarde ? [o/N]"
read -sn1
[[ $REPLY =~ [yYoO] ]] || { echo -e "${ROUGE}Abandon sauvegarde.${STNDT}\nSortie Sauvegarde"; exit; }
echo -e "${VERT}Sauvegarde lancée !\n${JAUNE}------------\nLancement sauvegarde $(date +'le : '%d-%m-%Y' à '%T)"
#SSD224Go=====
mountPnt="/media/bernard/SSD224Go"
repSauvg="${mountPnt}"
msgColor="${CYAN}"
if $(mountpoint "${mountPnt}" -q); then
    echo -e "${msgColor}------------\nSynchronisation en cours pour SSD224Go...\n------------"
    repertoire="/home/bernard"
    rsync --archive --partial --progress --delete-during --stats  \
          --include="MesPhotos/***"                               \
          --include="MesDocuments/***"                            \
          --include="DocumentsPerso/***"                          \
          --include="MesScripts/***"                              \
          --exclude="*"                                           \
    "${repertoire}/" "${repSauvg}/"  2>> "${backup}"
else
    echo "Attention SSD224Go ${mountPnt} absent"
fi
#DDSauv1To-a=====
mountPnt="/media/bernard/Sauv1To-a"
repSauvg="${mountPnt}/SauvDdPrincipal1"
msgColor="${ROSE}"
if $(mountpoint "${mountPnt}" -q); then
    if [ -d "${repSauvg}" ]; then
    echo -e "${msgColor}------------\nSynchronisation en cours pour DD1To...\n------------"
    repertoire="/"
    rsync --archive --partial --progress --delete-during --stats  \
          --include="home/***"                                    \
          --include="etc/***"                                     \
          --include="var/***"                                     \
          --exclude="*"                                           \
    "${repertoire}/" "${repSauvg}/"  2>> "${backup}"
    else
        echo "Attention, répertoire ${repSauvg} absent"
    fi
else
    echo "Attention, Disque 1To ${mountPnt} absent"
fi
#DD500Go=====
mountPnt="/media/usb0"
repSauvg="${mountPnt}/SauvDdPrincipal2"
msgColor="${BLEU}"
if $(mountpoint "${mountPnt}" -q); then
    if [ -d "${repSauvg}" ]; then
    echo -e "${msgColor}------------\nSynchronisation en cours pour DD500Go...\n------------"
    repertoire="/"
    rsync --archive --partial --progress --delete-during --stats  \
          --include="home/***"                                    \
          --include="etc/***"                                     \
          --include="var/***"                                     \
          --exclude="*"                                           \
    "${repertoire}/" "${repSauvg}/"  2>> "${backup}"
    else
        echo "Attention, répertoire ${repSauvg} absent"
    fi
else
    echo "Attention, Disque 500Go ${mountPnt} absent"
fi
#========
if [ -s "${backup}" ]; then
    echo -e $STNDT "Sauvegarde terminée : $(date +%d-%m-%Y) à $(date +%T)\n"
else
    echo -e $STNDT "Procédure interrompue par l'utilisateur : $(date +%d-%m-%Y) à $(date +%T)"
fi
read -p "Pour fermer le programme de sauvegarde : Ctrl + C"
# ---- fin du script ----
.
et son résultat complet :
bernard-portable:/home/bernard# /home/bernard/MesScripts/Sauvegarde_portable_Sauv1T_500go_SSD224Go_Test2
Exécuter la sauvegarde ? [o/N]
Sauvegarde lancée !
----
Lancement sauvegarde le : 25-09-2017 à 23:00:47
-----------
Synchronisation en cours pour SSD224Go...
------------
sending incremental file list

Number of files: 130,985 (reg: 119,289, dir: 11,678, link: 18)
Number of created files: 0
Number of deleted files: 0
Number of regular files transferred: 0
Total file size: 202,476,105,984 bytes
Total transferred file size: 0 bytes
Literal data: 0 bytes
Matched data: 0 bytes
File list size: 65,536
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 3,177,547
Total bytes received: 12,340

sent 3,177,547 bytes received 12,340 bytes 708,863.78 bytes/sec
total size is 202,476,105,984 speedup is 63,474.38
-----------
Synchronisation en cours pour DD1To...
------------
sending incremental file list
home/bernard/.config/chromium/Default/
home/bernard/.config/chromium/Default/Current Session
257,445 100% 42.85MB/s 0:00:00 (xfr#1, ir-chk=1104/56476)
home/bernard/.config/chromium/Default/Preferences
160,601 100% 19.15MB/s 0:00:00 (xfr#2, ir-chk=1085/56476)
home/bernard/.config/chromium/ShaderCache/GPUCache/data_1
270,336 100% 260.87kB/s 0:00:01 (xfr#3, ir-chk=1027/59108)
var/cache/samba/lck/
var/cache/samba/msg/
var/log/auth.log
15,506 100% 0.00kB/s 0:00:00 (xfr#4, to-chk=774/238028)
var/log/wtmp
175,488 100% 167.36MB/s 0:00:00 (xfr#5, to-chk=696/238028)
var/log/samba/log.nmbd
69,324 100% 927.39kB/s 0:00:00 (xfr#6, to-chk=603/238028)

Number of files: 238,028 (reg: 216,554, dir: 19,776, link: 1,413, special: 285)
Number of created files: 0
Number of deleted files: 0
Number of regular files transferred: 6
Total file size: 252,432,525,173 bytes
Total transferred file size: 948,700 bytes
Literal data: 948,700 bytes
Matched data: 0 bytes
File list size: 2,948,621
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 8,502,488
Total bytes received: 20,949

sent 8,502,488 bytes received 20,949 bytes 631,365.70 bytes/sec
total size is 252,432,525,173 speedup is 29,616.28
-----------
Synchronisation en cours pour DD500Go...
------------
sending incremental file list
home/bernard/.config/chromium/Default/
home/bernard/.config/chromium/Default/Current Session
257,445 100% 42.85MB/s 0:00:00 (xfr#1, ir-chk=1104/56476)
home/bernard/.config/chromium/Default/Preferences
160,601 100% 17.02MB/s 0:00:00 (xfr#2, ir-chk=1085/56476)
home/bernard/.config/chromium/ShaderCache/GPUCache/data_1
270,336 100% 1.19MB/s 0:00:00 (xfr#3, ir-chk=1027/59108)
var/cache/samba/lck/
var/cache/samba/msg/
var/log/auth.log
15,506 100% 0.00kB/s 0:00:00 (xfr#4, to-chk=774/238028)
var/log/wtmp
175,488 100% 167.36MB/s 0:00:00 (xfr#5, to-chk=696/238028)
var/log/samba/log.nmbd
69,324 100% 8.26MB/s 0:00:00 (xfr#6, to-chk=603/238028)

Number of files: 238,028 (reg: 216,554, dir: 19,776, link: 1,413, special: 285)
Number of created files: 0
Number of deleted files: 0
Number of regular files transferred: 6
Total file size: 252,432,525,173 bytes
Total transferred file size: 948,700 bytes
Literal data: 948,700 bytes
Matched data: 0 bytes
File list size: 2,948,621
File list generation time: 0.001 seconds
File list transfer time: 0.000 seconds
Total bytes sent: 8,502,444
Total bytes received: 20,909

sent 8,502,444 bytes received 20,909 bytes 897,195.05 bytes/sec
total size is 252,432,525,173 speedup is 29,616.58
Sauvegarde terminée : 25-09-2017 à 23:01:13

Pour fermer le programme de sauvegarde : Ctrl + C^C
bernard-portable:/home/bernard#

.
je peux l'insérer sans souci car court... enfin relativement court :icon_biggrin: à coté de ceux que j'ai "connus" :wink:

J'ai fait quelques erreurs, mais je pense que là, il fonctionne correctement... reste à faire les autres suggestions que tu as faites, et que je vais inclure demain... car demain est un autre jour... :wink:
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

Dans mon message du 20 sept. 2017, 13:09
j'en étais encore qu'à la découverte de la syntaxe de la commande rsync
et malheureusement, ce message comporte encore des erreurs.

Mais comme je constate que tu n'a pas repris ces erreurs,
je suppose que tu as dû t'inspirer d'un de mes messages plus récent,
et tu as bien fait. :icon_smile:
Avatar de l’utilisateur
DbFr871
Membre très actif
Membre très actif
Messages : 1140
Inscription : 17 mai 2016, 20:48
Localisation : Nègrepelissien
Contact :
Status : Hors-ligne

:006:
MicP a écrit : 26 sept. 2017, 09:25 Dans mon message du 20 sept. 2017, 13:09
j'en étais encore qu'à la découverte de la syntaxe de la commande rsync
et malheureusement, ce message comporte encore des erreurs.

Mais comme je constate que tu n'a pas repris ces erreurs,
je suppose que tu as dû t'inspirer d'un de mes messages plus récent,
et tu as bien fait. :icon_smile:
.
Oh que si, j'en ai fait des erreurs, sauf que j'ai fait un retour, que lorsque j'avais trouvé où ça coinçait... :wink:

et tu as raison, je me suis inspiré de tes derniers messages :icon_biggrin:
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
Avatar de l’utilisateur
DbFr871
Membre très actif
Membre très actif
Messages : 1140
Inscription : 17 mai 2016, 20:48
Localisation : Nègrepelissien
Contact :
Status : Hors-ligne

:006:

Voici la dernière mouture du script :

Code : Tout sélectionner

#!/bin/bash
# Déclaration des Variables
VERT="\\033[1;32m"
STNDT="\\033[0;39m"
ROUGE="\\033[1;31m"
ROSE="\\033[1;35m"
BLEU="\\033[1;34m"
BLANC="\\033[0;02m"
JAUNE="\\033[1;33m"
CYAN="\\033[1;36m"
backup="/home/bernard/bin/Sauvegardes/backuperror0Del-portable_Sauv1T_500go_SSD224Go.log"
#=======
echo -e "${BLEU}Exécuter la sauvegarde ? [o/N]"
read -sn1
[[ $REPLY =~ [yYoO] ]] || { echo -e "${ROUGE}Abandon sauvegarde.${STNDT}\nSortie Sauvegarde"; exit; }
echo -e "${VERT}Sauvegarde lancée !\n${JAUNE}===============================================\nLancement sauvegarde $(date +'le : '%d-%m-%Y' à '%T)"
#SSD224Go=====
echo -e
echo -e
echo -e
mountPnt="/media/bernard/SSD224Go"
repSauvg="${mountPnt}"
msgColor="${CYAN}"
if $(mountpoint "${mountPnt}" -q); then
    echo -e "${msgColor}=========================================\nSynchronisation en cours pour SSD224Go...\n"
    repertoire="/home/bernard"
    rsync --archive --partial --progress --delete-during --stats  \
          --include="MesPhotos/***"                               \
          --include="MesDocuments/***"                            \
          --include="DocumentsPerso/***"                          \
          --include="MesScripts/***"                              \
          --exclude="*"                                           \
    "${repertoire}/" "${repSauvg}/"  2>> "${backup}"
else
    echo "Attention SSD224Go ${mountPnt} absent"
fi
#DDSauv1To-a=====
echo -e
echo -e
echo -e
mountPnt="/media/bernard/Sauv1To-a"
repSauvg="${mountPnt}/SauvDdPrincipal1"
msgColor="${ROSE}"
if $(mountpoint "${mountPnt}" -q); then
    if [ -d "${repSauvg}" ]; then
    echo -e "${msgColor}======================================\nSynchronisation en cours pour DD1To...\n"
    repertoire="/"
    rsync --archive --partial --progress --delete-during --stats  \
          --include="home/***"                                    \
          --include="etc/***"                                     \
          --include="var/***"                                     \
          --exclude="*"                                           \
    "${repertoire}/" "${repSauvg}/"  2>> "${backup}"
    else
        echo "Attention, répertoire ${repSauvg} absent"
    fi
else
    echo "Attention, Disque 1To ${mountPnt} absent"
fi
#DD500Go=====
echo -e
echo -e
echo -e
mountPnt="/media/usb0"
repSauvg="${mountPnt}/SauvDdPrincipal2"
msgColor="${BLEU}"
if $(mountpoint "${mountPnt}" -q); then
    if [ -d "${repSauvg}" ]; then
    echo -e "${msgColor}========================================\nSynchronisation en cours pour DD500Go...\n"
    repertoire="/"
    rsync --archive --partial --progress --delete-during --stats  \
          --include="home/***"                                    \
          --include="etc/***"                                     \
          --include="var/***"                                     \
          --exclude="*"                                           \
    "${repertoire}/" "${repSauvg}/"  2>> "${backup}"
    else
        echo "Attention, répertoire ${repSauvg} absent"
    fi
else
    echo "Attention, Disque 500Go ${mountPnt} absent"
fi
#========
echo -e
echo -e
echo -e
if [ -s "${backup}" ]; then
    echo -e $STNDT "============================================"
    echo -e $STNDT "Sauvegarde terminée : $(date +%d-%m-%Y) à $(date +%T)\n"
else
    echo -e $STNDT "Procédure interrompue par l'utilisateur : $(date +%d-%m-%Y) à $(date +%T)"
fi
read -p "Pour fermer le programme de sauvegarde : Ctrl + C"
# ---- fin du script ----
.

et ce que je souhaiterai, maintenant que je vais avoir un disque dur de même capacité que le ssd qui va être mis en fonction, faire une sauvegarde "totale" de l'ensemble...
comme une copie, si vous voyez ce que je veux indiquer :wink:

Dans ce cas, quelle serait la bonne ligne de départ ?
est-ce qu'un simple

repertoire="/"
rsync --archive --partial --progress --delete-during --stats \
--include="/***" \

suffirait ?

Merci de vos retours :icon_biggrin:
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

Bonjour

Je pense qu'il n'est pas nécessaire de copier tous les répertoires concernant le système,
sutout si ce système est en cours de fonctionnement, car certains fichiers système seraient encore ouvert,
ce qui empêcherait une copie complète de ces fichiers et rendrait ces fichiers copiés incohérents.

Au pire, il vaudrait mieux faire une copie image intégrale du disque
depuis un système live <=> sans que le système à copier soit en cours de fonctionnement.
Il existe des programmes spécifiques qui font ça très bien.

Au mieux, ne sauvegarder que les fichiers personnels (les documents, photos, etc)
car une réinstallation du système est quand même assez rapide
et permettrait à coup sûr d'avoir un système cohérent et à jour (en terme de sécurité et cohérence)

=======
Peut-être vaudrait-il mieux ouvrir un fil de discussion concernant cette sauvegarde intégrale du système debian et/ou du disque système,
je suis sûr quil y a des personnes qui proposeront des solutions mieux adaptées que rsync pour faire ça.

Perso, ça fait très longtemps que je ne fais plus de sauvegarde de mon système débian,
car je trouve beaucoup plus rapide d'en réinstaller un tout frais, qui sera bien à jour en terme de sécurité.
Je ne sauvegarde que mes documents personnels.
Avatar de l’utilisateur
DbFr871
Membre très actif
Membre très actif
Messages : 1140
Inscription : 17 mai 2016, 20:48
Localisation : Nègrepelissien
Contact :
Status : Hors-ligne

MicP a écrit : 29 sept. 2017, 11:47 Bonjour

Je pense qu'il n'est pas nécessaire de copier tous les répertoires concernant le système,
sutout si ce système est en cours de fonctionnement, car certains fichiers système seraient encore ouvert,
ce qui empêcherait une copie complète de ces fichiers et rendrait ces fichiers copiés incohérents.

Au pire, il vaudrait mieux faire une copie image intégrale du disque
depuis un système live <=> sans que le système à copier soit en cours de fonctionnement.
Il existe des programmes spécifiques qui font ça très bien.

Au mieux, ne sauvegarder que les fichiers personnels (les documents, photos, etc)
car une réinstallation du système est quand même assez rapide
et permettrait à coup sûr d'avoir un système cohérent et à jour (en terme de sécurité et cohérence)

=======
Peut-être vaudrait-il mieux ouvrir un fil de discussion concernant cette sauvegarde intégrale du système debian et/ou du disque système,
je suis sûr quil y a des personnes qui proposeront des solutions mieux adaptées que rsync pour faire ça.

Perso, ça fait très longtemps que je ne fais plus de sauvegarde de mon système débian,
car je trouve beaucoup plus rapide d'en réinstaller un tout frais, qui sera bien à jour en terme de sécurité.
Je ne sauvegarde que mes documents personnels.
.

Ah... je n'avais pas pensé aux fichiers système encore ouverts...

C'était, comme j'ai redondance de disques, de faire cela... mais, je laisse tomber cette idée :icon_biggrin:
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

Bonsoir

Voilà une version qui va te permettre de tester l'accès aux points de mountages et aux répertoires cibles
avant de lancer la sauvegarde.

Un dialogue te proposera de relancer le test si un des disques n'est pas (ou mal) connecté
pour te permettre de connecter le disque manquant.

NOTE : Comme je le disais, certains fichiers pourraient être encore ouverts lors de la sauvegarde,
et c'est le cas des fichiers du répertoire /var
J'ai donc supprimé ce répertoire de la liste des répertoires à sauvegarder.

Code : Tout sélectionner

#!/bin/bash

backup="/home/bernard/bin/Sauvegardes/backuperror0Del-portable_Sauv1T_500go_SSD224Go.log"

### Couleurs :
INVRT="\\033[7m"
STNDT="\\033[0;39m"
ROUGE="\\033[1;31m"
BLANC="\\033[0;02m"
JAUNE="\\033[1;33m"
BLEU="\\033[1;34m"
VERT="\\033[1;32m"
ROSE="\\033[1;35m"
CYAN="\\033[1;36m"

### Tableaux :
tblNomSauv=( "SSD224Go"                                              "DD1To"                      "DD500Go"           )
tblColoMsg=( "${CYAN}"                                               "${ROSE}"                    "${BLEU}"           )
tblMntPnts=( "/media/bernard/SSD224Go/"                              "/media/bernard/Sauv1To-a/"  "/media/usb0/"      )
tblTrgDirs=( ""                                                      "SauvDdPrincipal1/"          "SauvDdPrincipal2/" )
tblSrcRoot=( "/home/bernard/"                                        "/"                          "/"                 )
tblSrcDirs=( "MesPhotos/;MesDocuments/;DocumentsPerso/;MesScripts/"  "home/;etc/"                 "home/;etc/"        )

#=======
### Recommencer les tests si la touche R a été préssée 
REPLY="r"
while [[ $REPLY = [rR] ]]; do
    msg="\n"
    erreurs=0
    for idx in ${!tblMntPnts[@]}; do
        msg+="${tblColoMsg[${idx}]}Le point de mountage\t${STNDT}${tblMntPnts[${idx}]} ${INVRT}"
        if mountpoint -q "${tblMntPnts[${idx}]}"; then
            msg+="${VERT}est bien un point de mountage accessible."
        else
            erreurs=1
            msg+="${ROUGE}n'est pas un point de mountage."
        fi
        msg+="${STNDT}\n"

        msg+="${tblColoMsg[${idx}]}Le répertoire\t\t${STNDT}${tblMntPnts[${idx}]}${tblTrgDirs[${idx}]} ${INVRT}"
        if test -w "${tblMntPnts[${idx}]}${tblTrgDirs[${idx}]}"; then
            msg+="${VERT}est OK."
        else
            erreurs=1
            msg+="${ROUGE}n'est pas accessible en écriture."
        fi
        msg+="${STNDT}\n\n"
    done
    echo -e "${msg}"
    ### Si erreur trouvée => Dialogue
    if test $erreurs = 1; then
        echo -e "${INVRT}${VERT}P${STNDT}oursuivre la Sauvegarde, ${INVRT}${VERT}Q${STNDT}uitter (ou autre touche), ${INVRT}${VERT}R${STNDT}ecommencer.\n"
        read -sn1
        [[ $REPLY = [qQ] ]] && { echo -e "${ROUGE}Abandon sauvegarde.${STNDT}\nSortie Sauvegarde\n"; exit; }
    else
       REPLY="P"
    fi
done

### Fonction pour options et arguments de rsync
optsArgsForRsync() {
    printf %s "--archive --partial --delete-during "
    IFS=";"
    for myDir in ${tblSrcDirs[${1}]}; do
        printf %s "--include=\"${myDir}***\" "
    done
    printf %s "--exclude=\"*\" ${tblSrcRoot[${1}]} ${tblMntPnts[${1}]}${tblTrgDirs[${1}]}"
}

### Sauvegardes
for idx in ${!tblNomSauv[@]}; do
    echo -e "${tblColoMsg[${idx}]}=========================================\nSynchronisation en cours pour ${tblNomSauv[${idx}]}..."
    rsync $(optsArgsForRsync ${idx})  2>> "${backup}"
done

# ⦅⦿⦿⦆ ⦅⦿⦿⦆ ⦅⦿⦿⦆
maDate="$(date +'le : '%d-%m-%Y' à '%T)"
if [ -s "${backup}" ]; then
    echo -e $STNDT "============================================"
    echo -e $STNDT "Sauvegarde terminée  ${maDate}\n"
else
    echo -e $STNDT "Procédure interrompue par l'utilisateur ${maDate}"
fi
read -p "Pour fermer le programme de sauvegarde : Ctrl + C"
# ---- fin du script ----
Avatar de l’utilisateur
DbFr871
Membre très actif
Membre très actif
Messages : 1140
Inscription : 17 mai 2016, 20:48
Localisation : Nègrepelissien
Contact :
Status : Hors-ligne

MicP a écrit : 01 oct. 2017, 21:43 Bonsoir

Voilà une version qui va te permettre de tester l'accès aux points de mountages et aux répertoires cibles
avant de lancer la sauvegarde.

Un dialogue te proposera de relancer le test si un des disques n'est pas (ou mal) connecté
pour te permettre de connecter le disque manquant.

NOTE : Comme je le disais, certains fichiers pourraient être encore ouverts lors de la sauvegarde,
et c'est le cas des fichiers du répertoire /var
J'ai donc supprimé ce répertoire de la liste des répertoires à sauvegarder.
...
.
Merci MicP, je teste et fais un retour après :icon_biggrin:
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

Je viens d'apporter quelques petites modifications de dernière minutes
au script de mon précédent message.
Avatar de l’utilisateur
DbFr871
Membre très actif
Membre très actif
Messages : 1140
Inscription : 17 mai 2016, 20:48
Localisation : Nègrepelissien
Contact :
Status : Hors-ligne

MicP a écrit : 02 oct. 2017, 04:30 Je viens d'apporter quelques petites modifications de dernière minutes
au script de mon précédent message.
.
Merci, je teste et fais un retour :icon_biggrin:
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
Avatar de l’utilisateur
DbFr871
Membre très actif
Membre très actif
Messages : 1140
Inscription : 17 mai 2016, 20:48
Localisation : Nègrepelissien
Contact :
Status : Hors-ligne

Voici le retour en image, en premier :

Image

J'apprécie les couleurs :icon_biggrin:

puis en commentaire + photo :
sur le ssd, il y a moins de dossiers à sauvegarder, que ce qui est indiqué sur cette autre photo :

Image

où je fais une comparaison entre le ssd (à gauche) et mon dossier bernard !

Là, je n'ai "touché" à rien du script, aussi, je vais regarder si je m'en dépatouille tout seul, à indiquer les dossiers à sauvegarder, et les autres, à laisser de coté :wink:
Si je n'y arrive pas, je te lancerai un "au secours" :wink:
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

Code : Tout sélectionner

tblNomSauv <=> Tableau des noms affichés pour la sauvegarde en cours
tblColoMsg <=> Tableau des couleurs d'affichage des messages

tblMntPnts <=> Tableau des points de mountage cible
tblTrgDirs <=> Tableau des répertoires (attachés au point de mountage) dans lesquels la copie sera faite

tblSrcRoot <=> Tableau des racines pour les répertoires source
tblSrcDirs <=> Tableau des liste des répertoires (attaché à la racine) à copier

Dans chaque tableau, il doit y avoir le même nombre d'éléments => ici, il y en a 3.

Dans le Tableau des répertoires à copier, il y a donc 3 listes de répertoires
et chaque répertoire dans cette liste des répertoires est séparé par un point-virgule.

=======
Tel quel, le script sauvegarde :

Code : Tout sélectionner

Le contenu du répertoire :  vers  Le répertoire cible :

/home/bernard/MesPhotos/          /media/bernard/SSD224Go/MesPhotos/
/home/bernard/MesDocuments/       /media/bernard/SSD224Go/MesDocuments/
/home/bernard/DocumentsPerso/     /media/bernard/SSD224Go/DocumentsPerso/
/home/bernard/MesScripts/         /media/bernard/SSD224Go/MesScripts/

/home/                            /media/bernard/Sauv1To-a/SauvDdPrincipal1/home/
/etc/                             /media/bernard/Sauv1To-a/SauvDdPrincipal1/etc/

/home/                            /media/usb0/SauvDdPrincipal2/home/
/etc/                             /media/usb0/SauvDdPrincipal2/etc/
=======
Pour tester le script, pour voir le dialogue PQR fonctionner
essaye d'oublier de mounter un disque cible (par exemple : /media/usb0/)

=======
Si ça te va mieux, tu peux remplacer :

Code : Tout sélectionner

### Tableaux :
tblNomSauv=( "SSD224Go"                                              "DD1To"                      "DD500Go"           )
tblColoMsg=( "${CYAN}"                                               "${ROSE}"                    "${BLEU}"           )
tblMntPnts=( "/media/bernard/SSD224Go/"                              "/media/bernard/Sauv1To-a/"  "/media/usb0/"      )
tblTrgDirs=( ""                                                      "SauvDdPrincipal1/"          "SauvDdPrincipal2/" )
tblSrcRoot=( "/home/bernard/"                                        "/"                          "/"                 )
tblSrcDirs=( "MesPhotos/;MesDocuments/;DocumentsPerso/;MesScripts/"  "home/;etc/"                 "home/;etc/"        )
par :

Code : Tout sélectionner

### Tableaux :
tblNomSauv[0]="SSD224Go"
tblColoMsg[0]="${CYAN}"
tblMntPnts[0]="/media/bernard/SSD224Go/"
tblTrgDirs[0]=""
tblSrcRoot[0]="/home/bernard/"
tblSrcDirs[0]="MesPhotos/;MesDocuments/;DocumentsPerso/;MesScripts/"

tblNomSauv[1]="DD1To"
tblColoMsg[1]="${ROSE}"
tblMntPnts[1]="/media/bernard/Sauv1To-a/"
tblTrgDirs[1]="SauvDdPrincipal1/"
tblSrcRoot[1]="/"
tblSrcDirs[1]="home/;etc/"

tblNomSauv[2]="DD500Go"
tblColoMsg[2]="${BLEU}"
tblMntPnts[2]="/media/usb0/"
tblTrgDirs[2]="SauvDdPrincipal2/"
tblSrcRoot[2]="/"
tblSrcDirs[2]="home/;etc/"
C'est exactement la même chose, mais présenté différemment.
Avatar de l’utilisateur
DbFr871
Membre très actif
Membre très actif
Messages : 1140
Inscription : 17 mai 2016, 20:48
Localisation : Nègrepelissien
Contact :
Status : Hors-ligne

:006: :wink:

Je n'ai pas encore mis les doigts dedans... mais là où ça me chiffonne, c'est loin d'être la présentation, mais les dossiers sauvegardés, alors que sur le ssd, il y a 4 dossiers, il y a eu tentative de sauvegarder la totalité de / !!! et idem pour le deux autres supports !

c'est pour cela que je t'ai mis la photo des deux répertoires, ils sont à l'identique...
et comme tu as supprimé progress et stats, c'est plus difficile de suivre ce que le script fait...

hier, j'ai été obligé de faire Ctrl+C pour le stopper... puis de supprimer les dossiers en trop, sur chaque support...

Autrement, Merci pour ce beau travail de présentation, et je souhaiterai avoir plus de précision sur pas mal de lignes, mais ce sera pour plus tard... :wink:
Cordialement,
Bernard
Debian9.1Stretch-XFCE-64bits-Sony-Vaio,Intel-P8400-2.26GHz,DD-SeagateSSHD500Go,GeForce9300M-GS-256Mo
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

Fais un essai avec le script ci-dessous :

Code : Tout sélectionner

#!/bin/bash

backup="/home/bernard/bin/Sauvegardes/backuperror0Del-portable_Sauv1T_500go_SSD224Go.log"

### Couleurs :
INVRT="\\033[7m"
STNDT="\\033[0;39m"
ROUGE="\\033[1;31m"
BLANC="\\033[0;02m"
JAUNE="\\033[1;33m"
BLEU="\\033[1;34m"
VERT="\\033[1;32m"
ROSE="\\033[1;35m"
CYAN="\\033[1;36m"

### Tableaux :
tblNomSauv=( "SSD224Go"                                              "DD1To"                      "DD500Go"           )
tblColoMsg=( "${CYAN}"                                               "${ROSE}"                    "${BLEU}"           )
tblMntPnts=( "/media/bernard/SSD224Go/"                              "/media/bernard/Sauv1To-a/"  "/media/usb0/"      )
tblTrgDirs=( ""                                                      "SauvDdPrincipal1/"          "SauvDdPrincipal2/" )
tblSrcRoot=( "/home/bernard/"                                        "/"                          "/"                 )
tblSrcDirs=( "MesPhotos/;MesDocuments/;DocumentsPerso/;MesScripts/"  "home/;etc/"                 "home/;etc/"        )

#=======
### Recommencer les tests si la touche R a été préssée 
REPLY="r"
while [[ $REPLY = [rR] ]]; do
    msg="\n"
    erreurs=0
    for idx in ${!tblMntPnts[@]}; do
        msg+="${tblColoMsg[${idx}]}Le point de mountage\t${STNDT}${tblMntPnts[${idx}]} ${INVRT}"
        if mountpoint -q "${tblMntPnts[${idx}]}"; then
            msg+="${VERT}est bien un point de mountage accessible."
        else
            erreurs=1
            msg+="${ROUGE}n'est pas un point de mountage."
        fi
        msg+="${STNDT}\n"

        msg+="${tblColoMsg[${idx}]}Le répertoire\t\t${STNDT}${tblMntPnts[${idx}]}${tblTrgDirs[${idx}]} ${INVRT}"
        if test -w "${tblMntPnts[${idx}]}${tblTrgDirs[${idx}]}"; then
            msg+="${VERT}est OK."
        else
            erreurs=1
            msg+="${ROUGE}n'est pas accessible en écriture."
        fi
        msg+="${STNDT}\n\n"
    done
    echo -e "${msg}"
    ### Si erreur trouvée => Dialogue
    if test $erreurs = 1; then
        echo -e "${INVRT}${VERT}P${STNDT}oursuivre la Sauvegarde, ${INVRT}${VERT}Q${STNDT}uitter (ou autre touche), ${INVRT}${VERT}R${STNDT}ecommencer.\n"
        read -sn1
        [[ $REPLY = [qQ] ]] && { echo -e "${ROUGE}Abandon sauvegarde.${STNDT}\nSortie Sauvegarde\n"; exit; }
    else
       REPLY="P"
    fi
done

### Fonction pour options et arguments de rsync
optsArgsForRsync() {
    printf %s "--archive --partial --delete-during "
    IFS=";"
    for myDir in ${tblSrcDirs[${1}]}; do
        printf %s "--include=\"${myDir}***\" "
    done
    printf %s "--exclude=\"*\" ${tblSrcRoot[${1}]} ${tblMntPnts[${1}]}${tblTrgDirs[${1}]}"
}

### Sauvegardes
for idx in ${!tblNomSauv[@]}; do
    echo -e "${tblColoMsg[${idx}]}=========================================\nSynchronisation en cours pour ${tblNomSauv[${idx}]}..."
    rsync $(optsArgsForRsync ${idx})  2>> "${backup}"
done

# ⦅⦿⦿⦆ ⦅⦿⦿⦆ ⦅⦿⦿⦆
maDate="$(date +'le : '%d-%m-%Y' à '%T)"
if [ -s "${backup}" ]; then
    echo -e $STNDT "============================================"
    echo -e $STNDT "Sauvegarde terminée  ${maDate}\n"
else
    echo -e $STNDT "Procédure interrompue par l'utilisateur ${maDate}"
fi
read -p "Pour fermer le programme de sauvegarde : Ctrl + C"
# ---- fin du script ----
Répondre