Question import liste pc, boucle, zip et copie simultanees

Plus d'informations
il y a 5 ans 2 mois #28743 par Arnaud
Bonjour à tous,

Un collègue à moi à créé un script asser complexe (pour moi) en batch pour effectuer une sauvegarde d'environ 250PC, sauvegarde que je vais vous décrire ci dessous. Le script (.bat) est asser ancien, et… mon collègue n'est plus la pour le maintenir.

Je voudrais en faire une nouvelle version, en PowerShell. (j'apprends le Scripting PowerShell depuis 4-5mois maintenant).

Avant de partir dans le code, je voulais vous consulter pour avoir peut être vos conseils.

Je vous explique les étapes que je voudrais effectuer.

1/ Importer une liste au format CSV de 250 ordinateurs concernés ( Première ligne de mon fichier CSV ce sont mes entetes de colonnes, avec le Nom_Site, Nom_Pc,Lien_Repertoire_A_Sauvegarder, etc etc)


2/ Exécuter une boucle sur l'ensemble des PC de la liste

3/ La boucle commence par voir si le Pc est sur le réseau

4 / Si le Pc est connecté, je zip le dossier du pc distant, dont le lien est \"Lien_repertoire_A_Sauvegarde\"

5/ Une fois que le dossier est zipé (taille du zip entre 50 et 80 MO environ), je le copie sur mon serveur de sauvegarde (lui aussi distant). Le zip déposé écrase la dernière version présente. je veux pas charger ce serveur.

Je fais ça pour les 250 pc.


Mon objectif c'est de trouver le moyen le plus efficace pour faire ce ZIP puis copier le dossier vers un lieu d'archivage, aujourd'hui je ne sais pas comment déclencher plusieurs copies simultanée ( je serai capable de faire un script pas à pas, qui serait pas forcément optimisé, et assez long...)

Quand le script sera fait, je programerai par exemple l'éxécution de se script 1 fois par semaine le jeudi à 2h dans la nuit.

Si vous avez des conseils à me donner, je suis preneurs :)

Merci

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 5 ans 2 mois #28745 par Laurent Dardenne
Salut,
quelles versions de Powershell as-tu sur ton parc ?
Exécutes-tu ton script sur un serveur ? si oui quelle version ?
Pour l'exécution à distance WinRm est-il possible sur ton poste/serveur vers les postes ciblés ?

Est-ce une sauvegarde en journée ?

Pour créer une archive .

Je te conseille de créer des fonctions simples, de générer des logs et d'implémenter une gestion d'erreur.
Si tu fais cela progressivement tu devrais t'en sortir.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 5 ans 2 mois #28761 par Arnaud
Salut, merci pour ta réponse Laurent,

ci dessous quelques éléments:

q:quelles versions de Powershell as-tu sur ton parc ?
r: j'utilise WindowsPowershell version 5.1

q:Exécutes-tu ton script sur un serveur ? si oui quelle
r: non , pour l'instant depuis un PC Administrateur du domaine, mais pas le serveur (ça peut se faire si possible)

q:version ?
r: toutes nos version sont en Windows PowerShell 5.1

q: Pour l'exécution à distance WinRm est-il possible sur ton poste/serveur vers les postes ciblés ?
r: oui, c'est possible


q:Est-ce une sauvegarde en journée ?
r: j'aurai préféré une sauvegarde dans la nuit. Après, pour faire mes premiers test je peux la faire en journée pour l'instant, il n'y a aucun risque. Le fichier que je veux Ziper ne sera pas utilisé par l'utilisateur


\"Je te conseille de créer des fonctions simples, de générer des logs et d'implémenter une gestion d'erreur\"

C'est mieux de passer avec des fonction, que d'écrire les lignes de commandes les unes après les autres dans une boucle ?


Mon problème principal, où je n'ai pas encore trouvé réponse, c'est comment lancer 5 copies de dossiers simultanées par exemple, tu aurais une idée ?

Deuxième question importante, pour transférer rapidement des dossier entre Server/PC ou Server/server est ce qu'il y a un canal spécifique ? ou les commandes copy-item et autre sont ce qu'il y a de mieux

Merci pour tes réponses Laurent ;)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 5 ans 2 mois #28762 par Sinjk
Salut,

Pour les copies simultanée je te conseil d'utiliser les méthodes asynchrones comme, par exemple, les jobs ou les runspaces. Tu pourras ainsi lancer plusieurs copies d'un coup.

Concernant la copie en elle même, je dirais que tu n'as pas d'autres choix que Copy-Item ou Robocopy,
j'avoue ne pas savoir lequel est meilleur en terme de perf..

Bon courage

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 5 ans 2 mois #28776 par Laurent Dardenne
Deka écrit:

Le fichier que je veux Ziper ne sera pas utilisé par l'utilisateur

C'était le pq de ma question

Deka écrit:

C'est mieux de passer avec des fonction, que d'écrire les lignes de commandes les unes après les autres dans une boucle ?

Oui si tu dois faire des jobs distants pour traiter en paralléle tes machines.
On peut tjr avancer que le principal c'est que le traitment soit fait, peu importe comment.
Si tu dois modifier une partie tu ne remets pas en cause l'ensemble. Le mieux étant un module contenant des fonctions.

Deka écrit:

Mon problème principal, où je n'ai pas encore trouvé réponse, c'est comment lancer 5 copies de dossiers simultanées par exemple, tu aurais une idée ?

Si tu parles de 5 copies sur 1 machines pas vraiment, si c'est 5 copies sur 5 machine oui.
Ensuite faut regarder la difficulté d'implémentation, ce type de code nécessite un bon niveau de connaissance en PS.
Si tu disposes de WinRm tu peux traiter + machines en // et chacune se chargera du traitement. ça c'est la théorie.
En pratique il faut, au cas où, configurer le parc, implémenter une gestion d'erreur poussée (côté client ET launcher (poste admin) ), centraliser les logs et prévoir une reprise en cas d'erreur.
Le pb principale étant de savoir ce qui ne fonctionne pas, car on ne se préoccupe pas de ce qui fonctionne ;-)

Une première version dans un boucle avec 3-4 machines est déjà un bon début,
Ensuite tu passes via WinRM avec 2-3 machines.
Cela nécessite tout de même une étude et du temps si tu ne connais pas ces sujets.

Deka écrit:

Deuxième question importante, pour transférer rapidement des dossier entre Server/PC ou Server/server est ce qu'il y a un canal spécifique ?

Non c'est juste une question de robustesse et de facilité, de déléguer cette tâche à Robocopy (avec reprise) est préférable.
Pour les perf tu peux le paramètrer à l'aide de /IPG:Number
Pour ce point, à mon avis, la suite c'est une question de réseau et de charge sur la cible.

C'est un projet intéressant en tout cas.
Tu peux regarder ceci

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 5 ans 2 mois #28778 par Arnaud
Merci pour vos réponses à tous les deux,

Laurent Dardenne écrit:

Si tu parles de 5 copies sur 1 machines pas vraiment, si c'est 5 copies sur 5 machine oui.


Dans mon cas, c'est lancer sur 5 machines différentes, en même temps l'archivage en .ZIP d'un dossier, puis copier le .ZIP de chaque machine vers 1 serveur. Donc c'est plutôt 5 copies sur 5 machines.

Laurent Dardenne écrit:

Non c'est juste une question de robustesse et de facilité, de déléguer cette tâche à Robocopy (avec reprise) est préférable.

Je vais chercher comment fonctionne Robocopy, ça m'interesse!

Laurent Dardenne écrit:

C'est un projet intéressant en tout cas.
Tu peux regarder ceci

Merci pour cet encouragement et aussi pour les sources !


Laurent Dardenne écrit:

Une première version dans un boucle avec 3-4 machines est déjà un bon début


Ok, je pense m'orienter de la sorte :

1/ Apprendre à bien utiliser le module Microsoft.PowerShell.Archive . Ce module me permettra de créer mes .ZIP

2/ Apprendre à utiliser Robocopy, pour les transferts de .ZIP vers mon serveur.

3/ Puis, Je vais me documenter sur les JOBS, pour apprendre à en faire. L'idée c'est d'arriver a faire les \"sauvegardes\" une à une dans un premier temps (etape 1 et 2), puis arriver par la suite à créer un JOB pour mener des sauvegardes en parallèle.

Merci les gars!

Si d'autres personnes ont des conseils, je reste à l'écoute (et ça servira à tous ceux comme moi :p )

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.122 secondes
Propulsé par Kunena