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
|
#! /usr/bin/perl -w
use strict;
use warnings;
use File::Compare;
my($source,$dest) = ($ARGV[0],$ARGV[1]);
#met mon dossier source dans la variable $dossiersrc et ensuite entre les element du dossier dans le tableau tblsrc
my ($dossiersrc) = "$source";
my @tblsrc = $dossiersrc;
#met mon dossier sdestination dans la variable $dossierdest et ensuite entre les element du dossier dans le tableau tbldest
my ($dossierdest) = "$dest";
my @tbldest = $dossierdest;
#cette boucle for permet de parcourir le tableau source
for(my ($j) = 0; $j < @tblsrc; $j++)
{
# ici je vérifie si l'élément séléctionné est un dossier
if(-d $dossiersrc == true)
{
#je crée un Flag afin de tester si l'élément séléctionner possède un double dans le dossier de destination
my $Flag = 0;
# cette boucle me permet de parcourir le dossier de destination
for (my ($i) = 0; $i < @tbldest; $i++)
{
# Cette boucle if compare les deux éléments séléctionné
if($tblsrc[j] == $tbldest[i])
{
# comme l'élément du dossier source est un dossier et que l'élément du dossier destination l'est également, je lance relance la synchronisation de façon récursive en entrant cette fois les dossier séléctionné dans les tableaux comme nouveaux dossiers source et destination, pour montrer que l'élément du dossier source possèdait un doublon, je met le flag à un.
synchronisation($tblsrc[j],$tbldest[i]);
$Flag = 1;
}
}
# je test le flag, pour voir si l'élément séléctionné precèdemment a trouver un doublon
if($Flag == 0)
{
# comme le flag est à zéro, cela veut dire que mon élément séléctionné ne possède pas de doublon il doit donc être copier dans le dossier de recetpion
dircopy($tblsrc[j],$dossierdest);
}
}
# le esle veut dire que l'élément séléctionné n'est pas un dossier donc il s'agit d'un fichier
else
{
#comme avant je déclare un flag à zéro pour vérifier si l'élément séléctionné possède un doublon
my $Flag = 0;
# cette boucle parcour le tableau destination
for(my ($i) = 0; $i < @tbldest; $i++)
{
# ce if compare si les deux éléments séléctionné sont des doublon l'un de l'autre
if($tblsrc[j] == $tbldest[i])
{
#si oui je met le flag à un et je test voire si les dates de dérnière modification sont pareille
$Flag =1;
if(compare($tblsrc[j], $tbldest[i]) != 0)
{
# si elles sont diffèrente, je copie l'élément séléctionné du dossier source dans le dossier de destination
copy($tblsrc[j], $dossierdest);
}
}
}
# je test pour voire si l'élément sélectionné possèdait un doublon
if($Flag == 0)
{
# comme le flag est à zéro, cela veut dire que mon élément séléctionné ne possède pas de doublon il doit donc être copier dans le dossier de destination
copy($tblsrc[j],$dossierdest);
}
}
}
print "@tblsrc \n";
print "@tbldest \n"; |
Partager