Bonjour
micka
Petite description d'une alternative en mode "texte" à l'usage "graphique" d'un logiciel comme celui préconisé par JLB > ce qui aura peut-être un effet dissuasif hé ! hé !
La commande
rsync dans le «
Terminal» fait ce que tu souhaites avec les options
-avu (
a comme
archive,
v comme
verbose et
u comme
update).
rsync avec la seule option
a copie les éléments d'une source qui
diffèrent des éléments d'une destination > sans affecter les éléments de la destination soit
autres soit
identiques. Avec l'option
u ajoutée >
rsync copie les éléments de la source qui
diffèrent des éléments de la destination > sans affecter les éléments
autres > mais en mettant à jour les éléments identiques dont la
date de modification est plus ancienne que celle des éléments identiques plus récents de la
source. L'option
v permet seulement l'affichage élément à élément des termes de la copie pendant qu'elle s'effectue (ce qui donne l'impression qu'il se passe quelque chose plutôt que rien).
En conséquence > une commande
rsync -avu prenant les éléments du
Dossier 1 comme
source et le
Dossier 2 comme
destination > produirait un
Dossier 2 mis à jour dont le contenu (en collant à ton exemple) initial
B;
C;
D serait désormais
A;
B (le + récent);
C (le + récent);
D.
À partir de là, une commande
rsync -avu prenant à son tour les éléments du
Dossier 2 comme
source et le
Dossier 1 comme
destination > produirait un clone de
2 dans
1 tel que les éléments initiaux de la
destination:
A;
B;
C deviendraient désormais
A;
B (le + récent);
C (le + récent);
D.
Si tu préférais que l'opération consiste en une synthèse des contenus des 2 dossiers
1 &
2 dans un 3è seul mis-à-jour complètement > alors une commande
rsync -avu prendrait pour
source les éléments du
Dossier 1 et pour destination le
Dossier 3 > puis une commande
rsync -avu prendrait pour
source les éléments du
Dossier 2 et pour
destination le
Dossier 3 > de telle sorte que le contenu du
Dossier 3 serait la somme des éléments des 2 dossiers, les éléments identiques mis à jour à leur état le plus récent.
--------------------
Pour ce qui est de la technique de la commande > si je me donne l'exemple de 3 dossiers intitulés
Dossier 1 >
Dossier 2 >
Dossier 3 tous les trois présents sur ton Bureau de session > alors la paire de commandes :
Bloc de code:
rsync -avu Desktop/"Dossier 1"/* Desktop/"Dossier 2"
rsync -avu Desktop/"Dossier 2/* Desktop/"Dossier 1"
produirait la synchronisation réciproque des contenus des 2 dossiers ; tandis que la paire de commandes :
Bloc de code:
rsync -avu Desktop/"Dossier 1"/* Desktop/"Dossier 3"
rsync -avu Desktop/"Dossier 2"/* Desktop/"Dossier 3"
produirait une synthèse à jour des contenus des 2 dossiers sources (
1 &
2) non modifiés en eux-mêmes dans le dossier d'accueil
Dossier 3 (supposé existant à l'état vide au départ).
3 remarques sont utiles à la compréhension logique de ces commandes de type "exemples" :
- j'écris
Desktop en mode brut de décoffrage pour désigner l'espace du répertoire de ton Bureau de session > pour la raison suivante : lorsqu'on lance le «
Terminal» de
macOS > par défaut l'opérateur bénéficie d'un
login automatique à la fois
identitaire (le nom court de l'utilisateur dont la session est ouverte) et
locatif (dans l'espace-racine de son dossier de compte). Si ton nom court d'utilisateur est
micka > alors quand tu lances le «
Terminal» > par défaut tu es automatiquement loggé en tant qu'
user micka at:
/Users/micka : l'espace-racine de ton dossier de compte. L'invite de commande est donc du type :
> le
tilde ~ désignant en abrégé (chemin relatif) la même chose que
/Users/micka (chemin absolu) = l'espace de ton dossier de compte > le
micka$ suivant te désignant comme opérateur loggé à cet emplacement.
On en déduit que l'opérateur
micka$, loggé par défaut at:
~ (=
/Users/micka), espace de répertoire où se trouve directement présent le sous-dossier
Desktop (= Bureau) > n'a qu'à saisir
Desktop tout court dans la fenêtre du «
Terminal» pour que ce soit compris comme
~/Desktop =
/Users/micka/Desktop.
- j'écris le nom des dossiers entre
"" (
"Dossier 1",
"Dossier 2",
"Dossier 3") > uniquement parce que leur intitulé comporte un
espace libre central. La mise entre
"" a la propriété de faire échapper cet espace libre lors de l'exécution de la commande > ce qui fait que l'intitulé est traité comme d'un seul tenant.
Un autre procédé pour échapper un espace libre dans l'intitulé d'un seul objet est l'
anti-slash \ > ce qui donnerait par exemple:
Dossier\ 1 > mais je l'ai évité pour la raison qu'il est d'une saisie un peu moins évidente que les
"".
- j'ai terminé la désignation des dossiers
source chaque fois par un
/* > qui équivaut à : "
tous les éléments compris dans le dossier" > parce que
rsync copie directement l'
objet assigné en
source dans le répertoire assigné en
destination. Si j'avais mentionné comme
source :
"Dossier 1" en bloc >
rsync aurait copié le
Dossier 1 source à l'intérieur du
Dossier 2 de
destination > à côté des éléments déjà contenus dans
Dossier 2.
Afin que
rsync importe le seul
contenu des éléments de la
source, et pas le
dossier parent de la
source avec ses éléments > il faut donc faire suivre la désignation du
dossier source (ex.
"Dossier 1") de la désignation de ses
éléments pris en totalité (
/*) > ce qui donne :
"Dossier 1"/*.