OVH Cloud OVH Cloud

copie de serveur à serveur

13 réponses
Avatar
berthelagrandepatte
Bonjour

Nous avons deux sites reliés via une LS donc débit très limité. Un dossier
sur un des serveurs du site central doit etre accessible pour tout le monde
en lecture seule. Le Pb vient du site distant puisque l'affichage du contenu
de ce dossier est très lent a cause de cette LS. L'idée est de copier le
dossier du site central vers le site distant et ensuite au travers d'un
script qui s'executera la nuit, controler le contenu de chaque dossier de
chaques sites pour verifier si des mises a jour ou ajout de fichiers ont été
éffectué puis mettre à jour le site qui ne l'est pas.

Est ce possible de realiser ce type de script ??

Toutes les idées sont bonnes, n'hesitez pas.

Merci

10 réponses

1 2
Avatar
Nicolas
si je comprend bien, tu veux synchroniser tes deux dossiers la nuit ?

Nicolas.
Avatar
Nicolas
Je pense qu'un fichier bat devrait suffir :

xcopy /d/y *.*

permet de copier tous les fichiers et de remplacer les fichiers uniquement
si la date sources et supérieur à la destination.

Nicolas.
Avatar
Do Re Mi chel La Si Do
Bonjour !


Je pense que le batch est une (très) bonne solution.
A condition de travailler sur des dossiers partagés.

Un avantage de travailler avec des Batchs, c'est la possibilité de lancer le
script via les tâches planifiées.

En conséquence, à l'exemple de Nicolas, j'ajouterais le commutateur /C
pour éviter un blocage, en cas de problème (genre fichier système non
accessible). Eventuellement, /S pour traiter les sous-répertoires.

On pourrait également rediriger la sortie dans un fichier, pour avoir une
trace du travail effectué. Avec la possibilité de filtrer (| FIND ).

Résumons ; si le script est lancé depuis le serveur distant (celui qui
reçoit les fichiers) :
XCOPY ServeurDossier*.* C:Dossier2 /D /S /C /Y >>Logcopy.txt


Et tout ça en une seule ligne !


@-salutations

Michel Claveau
Avatar
Jacques Barathon [MS]
"Do Re Mi chel La Si Do" wrote in message
news:

En conséquence, à l'exemple de Nicolas, j'ajouterais le commutateur /C
pour éviter un blocage, en cas de problème (genre fichier système non
accessible). Eventuellement, /S pour traiter les sous-répertoires.


Je conseillerais plutôt l'utilisation de ROBOCOPY. L'intérêt principal est
d'utiliser l'option /MIR qui gérera également la suppression des fichiers
qui ont été supprimés sur le serveur source.

ROBOCOPY est téléchargeable sur le site de Microsoft, dans les outils du
Resource Kit de Microsoft il me semble.

Jacques

Avatar
Do Re Mi chel La Si Do
Bonsoir !

Pour le problème de suppression des fichiers du répertoire Doss2 qui
n'existe pas (plus) dans Doss1, on peut s'inspirer du Batch suivant :

@echo off
dir Doss1 /B >tmp.txt
xcopy Doss2 Doss1 /L /EXCLUDE:tmp.txt |FIND /V "fichier(s)">tmp2.txt
FOR /F "tokens=*" %%i in (tmp2.txt) do (del %%i)
del tmp.txt
del tmp2.txt


@-salutations

Michel Claveau
Avatar
Jacques Barathon [MS]
"Do Re Mi chel La Si Do" wrote in message
news:%
Bonsoir !

Pour le problème de suppression des fichiers du répertoire Doss2 qui
n'existe pas (plus) dans Doss1, on peut s'inspirer du Batch suivant :

@echo off
dir Doss1 /B >tmp.txt
xcopy Doss2 Doss1 /L /EXCLUDE:tmp.txt |FIND /V "fichier(s)">tmp2.txt
FOR /F "tokens=*" %%i in (tmp2.txt) do (del %%i)
del tmp.txt
del tmp2.txt


Intéressant, mais bigrement compliqué pour un problème simple à régler avec
robocopy:

robocopy doss1 doss2 /mir

De plus, robocopy est particulièrement efficace (c'est-à-dire fiable et
rapide) dans la copie de fichiers à travers le réseau.

Pour info, robocopy est inclus dans les outils du Resource Kit Windows
Server 2003:
http://www.microsoft.com/downloads/details.aspx?displaylang=en&familyid467a69-57ff-4ae7-96ee-b18c4790cffd

Jacques

Avatar
berthelagrandepatte
Excusez moi de cette réponse un peu tardive.Je vous suis très reconnaissant
pour toutes ces propositions. Je les testerai et choisirai la plus adaptée en
fonction de mon environnement.

Coridalement


"Do Re Mi chel La Si Do" wrote in message
news:%
Bonsoir !

Pour le problème de suppression des fichiers du répertoire Doss2 qui
n'existe pas (plus) dans Doss1, on peut s'inspirer du Batch suivant :

@echo off
dir Doss1 /B >tmp.txt
xcopy Doss2 Doss1 /L /EXCLUDE:tmp.txt |FIND /V "fichier(s)">tmp2.txt
FOR /F "tokens=*" %%i in (tmp2.txt) do (del %%i)
del tmp.txt
del tmp2.txt


Intéressant, mais bigrement compliqué pour un problème simple à régler avec
robocopy:

robocopy doss1 doss2 /mir

De plus, robocopy est particulièrement efficace (c'est-à-dire fiable et
rapide) dans la copie de fichiers à travers le réseau.

Pour info, robocopy est inclus dans les outils du Resource Kit Windows
Server 2003:
http://www.microsoft.com/downloads/details.aspx?displaylang=en&familyid467a69-57ff-4ae7-96ee-b18c4790cffd

Jacques






Avatar
Do Re Mi chel La Si Do
Salut !

Je verrais mieux :
RoboCopy ServeurDossier C:Dossier2 /S /MIR /ZB /IPG:8 /RH:0100-0500

Mais, robocopy a un gros défaut : la doc et l'aide ne sont pas en français !
Autre défaut : ce n'est pas moi qui ai indiqué le truc ;o( (là c'est le
quotient émotionnel qui parle).

MCI
Avatar
Jacques Barathon [MS]
"Do Re Mi chel La Si Do" wrote in message
news:
Salut !

Je verrais mieux :
RoboCopy ServeurDossier C:Dossier2 /S /MIR /ZB /IPG:8 /RH:0100-0500


/S n'est pas nécessaire si tu utilises /MIR.

/ZB? A vrai dire je n'ai jamais utilisé. D'après la doc ça peut ralentir les
perfs de la copie, et elle recommande de ne l'utiliser que si l'expérience
montre que c'est utile.

/IPG:8 est utile pour libérer un peu de bande passante si la copie a lieu en
journée, mais si elle a lieu la nuit on peut supposer que la bande passante
sera libre à 99% pour la copie. Dans ce cas il vaut mieux éviter de "perdre"
8 ms après chaque paquet pour que la copie soit finie dans la nuit!

/RH:0100-0500 est utile s'il est employé avec /PF. Utilisé seul, il ne
contrôle que l'heure de démarrage de la commande, ce qui n'a pas grande
utilité si la copie est lancée par une tâche planifiée. Par contre, si tu
ajoutes /PF tu peux vérifier avant la copie de chaque fichier qu'elle
démarre dans le créneau horaire spécifié.

En résumé, en supposant qu'on veut copier à partir de serveur1 le contenu
de D:Source sur serveur2destination en démarrant le job tous les soirs à
22h et qu'on veut être sûr qu'aucune copie de fichier ne sera lancée après
6h du matin, je conseillerais donc de planifier une tâche qui exécutera la
commande suivante:

robocopy D:Source serveur2destination /MIR /RH:2200-0600

Pour planifier cette commande, il faut la mettre dans un fichier de commande
(par exemple transfert.cmd) et la planifier via les Tâches Planifiées du
Panneau de Configuration, en donnant un compte d'exécution qui au minimum
aura accès en lecture sur D:Source et en écriture sur
serveur2destination.

Mais, robocopy a un gros défaut : la doc et l'aide ne sont pas en français
!


Oui, et c'est dommage car cette doc est très complète. Mais ce newsgroup est
là pour éclairer les utilisateurs qui ne lisent pas l'anglais :-)

Autre défaut : ce n'est pas moi qui ai indiqué le truc ;o( (là c'est le
quotient émotionnel qui parle).


Là, je n'ai plus d'argument... ;-)

Jacques

Avatar
Do Re Mi chel La Si Do
Re


Juste un détail, pour terminer :

J'avais cru comprendre que /ZB correpondait au /C de xcopy, et pouvait
éviter d'avoir la copie bloquée (en attente) lors d'un bête problème d'accès
(par exemple).

Ce commutateur peut ainsi permettre d'effectuer des siestes sereines et
tranquilles (chose que je vais tester dans quelques minutes, si le client ne
s'en aperçoit pas...)


@-salutations

Michel Claveau
1 2