Je comprends d'après ton exemple que tu dois tout à la fois :
- ignorer les fichiers identiques dans A et B
- mettre à jour dans B les fichiers depuis leur version plus récente dans A
- remplacer dans B les fichiers par leur version plus ancienne dans A
(sûr ?)
- copier dans B les fichiers qui n'existent que dans A
- supprimer de B les fichiers qui n'existent pas dans A
(sûr ?)
Avec « rsync », je procède de la façon suivante :
Bloc de code:
rsync [B]-acv --verbose --delete[/B] [COLOR="DarkGreen"]chemin_vers_A/A/[/COLOR] [COLOR="DarkSlateBlue"]chemin_vers_B/B[/COLOR]
Note bien qu'il y a un
/ après
A, mais pas après
B .
Les options utilisées ici sont les suivantes :
-a : préserve les informations (dates et heures, permissions, propriétaire...) et traite les sous-dossiers
-c : vérifie le contenu effectifs (checksum) des fichiers pour déterminer s'il s'agit des mêmes
-v --verbose : affiche les informations sur le travail effectué
--delete : supprime les fichiers en trop
Par exemple, si le contenu des dossiers est le suivant :
Bloc de code:
A --+-- fichier_A
|
+-- fichier_B [I][COLOR="DimGray"](ancienne version)[/COLOR][/I]
|
+-- fichier_C [I][COLOR="DimGray"](nouvelle version)[/COLOR][/I]
|
+-- fichier_D
B --+-- fichier_A
|
+-- fichier_B [I][COLOR="DimGray"](nouvelle version)[/COLOR][/I]
|
+-- fichier_C [I][COLOR="DimGray"](ancienne version)[/COLOR][/I]
|
+-- fichier_E
Alors :
- fichier_A est ignoré et inchangé
- fichier_B est rétabli dans son ancienne version
- fichier_C est mis à jour
- fichier_D est rajouté
- fichier_E est supprimé
Et on retrouve donc :
Bloc de code:
B --+-- fichier_A
|
+-- fichier_B [I][COLOR="DimGray"](ancienne version)[/COLOR][/I]
|
+-- fichier_C [I][COLOR="DimGray"](nouvelle version)[/COLOR][/I]
|
+-- fichier_D
soit un dossier B identique au dossier A.
Et ça marche même lorsque A et B ne sont pas sur le même ordinateur.