Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Synchronisation de repertoires

2 réponses
Avatar
fdfdfd
Salut a tous.

J'aimerais synchroniser deux repertoire, un repertoire d'origine
(repOrig) avec un repertoire de destination (repDest). J'aimerais
obtenir le fonctionnement suivant:
--> un fichier de repOrig crée / modifié: procedure de copie dans repDest
--> un fichier de repDest n'a pas de fichier original dans repOrig (le
fichier a donc été supprimé dans repOrig): suppression du fichier
superflu dans repDest.

Je n'ai pas (trop) envie d'utiliser une base de donnée comme Mysql, mais
peut-etre une base de donnée type DB2.

si l'on raisonne sur deux tableau basiques, voici ce que je trouve

repOrig:
Array (
[0] => aaa.html
[1] => fonctions.php
[2] => mondial.swf
[3] => Readme.txt
[4] => vache2.bmp --> fichier ajouté
[5] => zip.gif
[6] => totototot
[7] => toto1
)

repDest:
Array (
[0] => aaa.html
[1] => fonctions.php
[2] => mondial.swf
[3] => Readme.txt
[4] => zip.gif
[5] => toto1
[6] => totototot
[7] => tiret.gif --> fichier supprimé
)

La seule chose (simple) que je trouve a faire c'est de comparer chacune
chacune des clefs de mes deux tableaux, ce qui nous donne déja pour
cet exemple basique 8*8 = 64 tests. Y aurait-il une fonction qui
permettrait de trouver les clefs du genre:

Array_compare(repOrig, repDest) donne vache2.bmp

et

Array_compare(repDest, repOrig) donne tiret.gif

Array_diff ne semble pas donner le bon resultat (il me donnerait
vache2.bmp ET tiret.gif, sans compter les éléments qui ne sont pas a la
bonne place)

Merci de votre aide

2 réponses

Avatar
Guillaume Bouchard
fdfdfd wrote:
J'aimerais synchroniser deux repertoire, un repertoire d'origine
(repOrig) avec un repertoire de destination (repDest). J'aimerais
obtenir le fonctionnement suivant:
--> un fichier de repOrig crée / modifié: procedure de copie dans repDest
--> un fichier de repDest n'a pas de fichier original dans repOrig (le
fichier a donc été supprimé dans repOrig): suppression du fichier
superflu dans repDest.


La flemme de tester, mais d'un pts de vu algo, je dirais :

Parcours sequentiel de repOrig, test avec in_array si chaques elements
est dans repDest, si on trouve un element qui n'y est pas, ajout.

Parcours sequentiel de repDest, si on trouve un élement qui n'est pas
dans repOrig, paaf, corbeille.

On peut facilement éviter le parcours sequentiel de repDest en testant
si le nombre de fichier present dans repDest + ceux que l'on ajoute =
repOrig. Si il y en a plus, c'est que il y a des fichiers à effacer.

--
Guillaume.

Avatar
Pomm
fdfdfd wrote:
J'aimerais synchroniser deux repertoire, un repertoire d'origine
(repOrig) avec un repertoire de destination (repDest). J'aimerais
obtenir le fonctionnement suivant:
--> un fichier de repOrig crée / modifié: procedure de copie dans repDest
--> un fichier de repDest n'a pas de fichier original dans repOrig (le
fichier a donc été supprimé dans repOrig): suppression du fichier
superflu dans repDest.


Tu définis une relation d'ordre sur les fichiers. Tu classes chaque dossier
avec cette relation d'ordre. Tu parcours ensuite les 2 dossiers en même tps
en suivant cet ordre et tu fais les actions voulues. La complexité de
l'algorithme est réduite au classement des dossiers +o(...)