Kuidas kopeerida faile mitmesse arvutisse: Difference between revisions

From ICO wiki
Jump to navigationJump to search
No edit summary
No edit summary
Line 34: Line 34:
       objFSO.CopyFile "\\ServerName\Shared\file.txt", strRemoteFile, OverwriteExisting<br />
       objFSO.CopyFile "\\ServerName\Shared\file.txt", strRemoteFile, OverwriteExisting<br />
     Loop<br />
     Loop<br />
Selle scripti toimimise eelduseks on fail ’computers.txt’, kus on igal real kirjas arvuti nimi, kuhu fail kopeeritakse. Näiteks:
Selle scripti toimimise eelduseks on fail ’computers.txt’, kus on igal real kirjas arvuti nimi, kuhu fail kopeeritakse. Näiteks: <br />
[[File:MM_2.jpg]] <br />
Sellise arvutite nimekirja tekstifailina saab muidugi kirjutada ka käsitsi. Domeenis olevate arvutite puhul saab kasutada skripti, mis selle nimekirja automaatselt koostab. Kasutada saab käsku:
  dsquery computer –o rdn , <br />
mis võtab domeeni serveriks olevast arvutist Active Directory-st kõikide arvutite nimed välja, domeeni tunnusteta (arvutite nimekirja küsimisel saab ka filtreid rakendada. Täpsemalt vaata: http://thebackroomtech.com/2009/06/11/howto-export-a-list-of-all-computers-in-an-ad-ou/ )
Seega domeeni serveris võiks skript olla kahes etapis:<br />
1.’Copy.bat’ sisu:<br />
  dsquery computer –o rdn > \\srv2003\Shared\computers.txt
  script_copy.vbs
2.’Script_copy.vbs’ sisu:<br />
  Const ForReading = 1
  /*Kirjutab failid üle, kui juba on ees samanimeline fail*/
  Const OverwriteExisting = TRUE
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  /*dsquery-ga saadud arvutite nimekiri avatakse*/
  Set objFile = objFSO.OpenTextFile("\\srv2003\Shared\computers.txt")
  /*Iga rida computers.txt failis käiakse läbi ja kopeeritakse file.txt fail test kausta*/
  Do Until objFile.AtEndOfStream
      strComputer = objFile.ReadLine
      /*active directoryst loetud arvuti nimede ümbert jutumärkide eemaldamine*/
      computer = replace(strComputer, """", "")
      strRemoteFile = "\\" & computer & "\test\"
      objFSO.CopyFile "\\srv2003\Shared\file.txt", strRemoteFile, OverwriteExisting
  Loop
Seega tuleks command line-lt käivitada fail ’Copy.bat’, mis ise omakorda tõmbab käima skripti ’script_copy.vbs’. Mõlema skripti tulemuseks on, et igasse arvutisse, mis on kirjas ’computers.txt’ failis, kopeeritakse kausta ’test’ fail nimega ’file.txt’. Kõik, nii käivitatavad kui ka loetavad failid, asuvad serveris nimega ’srv2003’ kaustas ’Shared’.
Sarnase skripti saab kirjutada ka näiteks PowerShellis. Süntaks on erinev, loogika täpselt sama. Ja loomulikult võib kopeeritavaid faile olla rohkem – lisades veel ühe tsükli, mis käib läbi failide nimekirja, mida kopeerida ning on analoogne arvutite nimekirjaga.
Näiteks võib kasutada sellist skripti:<br />
  Const ForReading = 1
  Const OverwriteExisting = TRUE
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objFSO2 = CreateObject("Scripting.FileSystemObject")
  Set objFile = objFSO.OpenTextFile("\\ServerName\Shared\computers.txt") 
  Do
    strComputer = objFile.ReadLine
    strRemoteFile = "\\" & strComputer & "\test\"
    Set objFile2 = objFSO2.OpenTextFile("\\ServerName\Shared \files.txt") 
    Do Until objFile2.AtEndOfStream
        strFile = objFile2.ReadLine
        strRemoteFile2 = "\\ServerName\Shared\"& strFile
        objFSO.CopyFile strRemoteFile2, strRemoteFile, OverwriteExisting
    Loop
  Loop Until objFile.AtEndOfStream
Mis loeb kopeeritavate failide nimekirja failist files.txt. Failide nimekirja saab käsuga: <br />
  dir /b > files.txt<br />
Seega domeeni serveris võiks skripti täiendada ka nii: <br />
1.’Copy.bat’ sisu :<br />
  dsquery computer –o rdn > \\srv2003\Shared\computers.txt<br />
  dir \\ServerName\Shared /b > files.txt<br />
  script_copy.vbs<br />
 
== Domain Controller GPO Editor abiga ==
 
Eelduseks Domain Controlled GPO Editor-i kasutamiseks on, et valmis on kirjutatud skript(näiteks eelmises punktis kirjutatud ’copy.bat’ või ’script_copy.vbs’ skript) ning et on seadistatud domeeni server.
GPO Editori abil saab failide kopeerimist arvutitesse seadistada näiteks domeeni arvutisse sisse või välja logimisel (logon/logoff scripts).

Revision as of 19:00, 24 October 2011

Sissejuhatus

Failide kopeerimiseks mitmesse arvutisse on erinevaid võimalusi. Kõige lihtsam ja esimesena meelde tulev viis, kuidas faile mitmesse arvutisse kopeerida, on ilmselt kõik arvutid ükshaaval läbi käia ja mõne välise seadme (näiteks CD, USB jne) abil failid arvutitesse kopeerida. Kuid kui arvutied on palju, siis on see ajamahukas protsess. Samuti ei tule selline lahendus kõne alla, kui arvutid asuvad ruumiliselt hajusalt (harukontorid vmt olukord). Kui arvutite ükshaaval läbi käimine ei ole variant, siis sellisel juhul saab abiks võtta Windowsi skriptimiskeeled (PowerShell, VB Script vmt) ning neis kirjutatud fail kasvõi command line (cmd) abil käivitada. Kui arvutid asuvad ühises domeenis, siis saab kasutada ka Windowsi domeeni serveri Group Policy Object Editori (GPO Editor) abi.

Eeldused

1. On olemas keskne kopeeritavate failide hoidja, näiteks server
2. On olemas klientarvutid, kuhu failid kopeeritakse
3. Klientarvutid on ligipääsetavad serverist
4. On olemas üks kindel kaust klientarvutites, kuhu failid kopeeritakse
5. Klientarvutite kopeeritavaid faile vastuvõtval kaustal on õigused määratud nii, et sinna on võimalik serverist faile kirjutada
Näiteks, kui klientarvutites on kaust ’test’, siis tema seaded võiksid olla näiteks järgmised:
(hiire parema klahviga klikk kaustal ’test’ -> Properties -> Advanced Sharing -> Permissions -> vali mingi grupp või kasutaja, kellel on õigus serverist faile arvutisse kopeerida)

Skript

Kui eeldused on täidetud, siis tuleb kirjutada skript. Skript võib olla ka nii lihnte nagu järgnev:

  xcopy „\\srv2003\Shared\file.txt“ „\\Marikaxp\test\“

kus xcopy on käsk ning esimesel kohal kopeeritava faili asukoht koos faili nimega ning teisel kohal lõppasukoht kopeeritavale failile.
Salvestades selle rea *.bat või *.cmd faili ning kirjutada analoogsed read ka teistele arvutitele ning failidele. Samuti saab kopeerida teatud tüüpi faile – toodud näide tuleks siis asendada selliselt:

  xcopy „\\ServerName\Shared\*.txt“" „\\DestinationComputer\test\“

mis kopeerib serveri ’Shared’ kaustast kõik tekstifailid klientarvuti ’test’ kausta.
Samas võib skript olla ka keerulisem ent lihtsam hallata. Näiteks selline VB Script (script_copy.vbs):

 Const ForReading = 1
Const OverwriteExisting = TRUE Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("\\ServerName\Shared\computers.txt")
Do Until objFile.AtEndOfStream
strComputer = objFile.ReadLine
strRemoteFile = "\\" & strComputer & "\test\"
objFSO.CopyFile "\\ServerName\Shared\file.txt", strRemoteFile, OverwriteExisting
Loop

Selle scripti toimimise eelduseks on fail ’computers.txt’, kus on igal real kirjas arvuti nimi, kuhu fail kopeeritakse. Näiteks:

Sellise arvutite nimekirja tekstifailina saab muidugi kirjutada ka käsitsi. Domeenis olevate arvutite puhul saab kasutada skripti, mis selle nimekirja automaatselt koostab. Kasutada saab käsku:

  dsquery computer –o rdn , 

mis võtab domeeni serveriks olevast arvutist Active Directory-st kõikide arvutite nimed välja, domeeni tunnusteta (arvutite nimekirja küsimisel saab ka filtreid rakendada. Täpsemalt vaata: http://thebackroomtech.com/2009/06/11/howto-export-a-list-of-all-computers-in-an-ad-ou/ ) Seega domeeni serveris võiks skript olla kahes etapis:
1.’Copy.bat’ sisu:

  dsquery computer –o rdn > \\srv2003\Shared\computers.txt
  script_copy.vbs

2.’Script_copy.vbs’ sisu:

  Const ForReading = 1
  /*Kirjutab failid üle, kui juba on ees samanimeline fail*/
  Const OverwriteExisting = TRUE
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  /*dsquery-ga saadud arvutite nimekiri avatakse*/
  Set objFile = objFSO.OpenTextFile("\\srv2003\Shared\computers.txt")
  /*Iga rida computers.txt failis käiakse läbi ja kopeeritakse file.txt fail test kausta*/
  Do Until objFile.AtEndOfStream
     strComputer = objFile.ReadLine
     /*active directoryst loetud arvuti nimede ümbert jutumärkide eemaldamine*/
     computer = replace(strComputer, """", "")
     strRemoteFile = "\\" & computer & "\test\"
     objFSO.CopyFile "\\srv2003\Shared\file.txt", strRemoteFile, OverwriteExisting
  Loop

Seega tuleks command line-lt käivitada fail ’Copy.bat’, mis ise omakorda tõmbab käima skripti ’script_copy.vbs’. Mõlema skripti tulemuseks on, et igasse arvutisse, mis on kirjas ’computers.txt’ failis, kopeeritakse kausta ’test’ fail nimega ’file.txt’. Kõik, nii käivitatavad kui ka loetavad failid, asuvad serveris nimega ’srv2003’ kaustas ’Shared’. Sarnase skripti saab kirjutada ka näiteks PowerShellis. Süntaks on erinev, loogika täpselt sama. Ja loomulikult võib kopeeritavaid faile olla rohkem – lisades veel ühe tsükli, mis käib läbi failide nimekirja, mida kopeerida ning on analoogne arvutite nimekirjaga.   Näiteks võib kasutada sellist skripti:

  Const ForReading = 1
  Const OverwriteExisting = TRUE
  Set objFSO = CreateObject("Scripting.FileSystemObject")
  Set objFSO2 = CreateObject("Scripting.FileSystemObject")
  Set objFile = objFSO.OpenTextFile("\\ServerName\Shared\computers.txt")  
  Do 
    strComputer = objFile.ReadLine
    strRemoteFile = "\\" & strComputer & "\test\"
    Set objFile2 = objFSO2.OpenTextFile("\\ServerName\Shared \files.txt")  
    Do Until objFile2.AtEndOfStream
       strFile = objFile2.ReadLine
       strRemoteFile2 = "\\ServerName\Shared\"& strFile
       objFSO.CopyFile strRemoteFile2, strRemoteFile, OverwriteExisting
    Loop 
  Loop Until objFile.AtEndOfStream

Mis loeb kopeeritavate failide nimekirja failist files.txt. Failide nimekirja saab käsuga:

 dir /b > files.txt

Seega domeeni serveris võiks skripti täiendada ka nii:
1.’Copy.bat’ sisu :

  dsquery computer –o rdn > \\srv2003\Shared\computers.txt
dir \\ServerName\Shared /b > files.txt
script_copy.vbs

Domain Controller GPO Editor abiga

Eelduseks Domain Controlled GPO Editor-i kasutamiseks on, et valmis on kirjutatud skript(näiteks eelmises punktis kirjutatud ’copy.bat’ või ’script_copy.vbs’ skript) ning et on seadistatud domeeni server. GPO Editori abil saab failide kopeerimist arvutitesse seadistada näiteks domeeni arvutisse sisse või välja logimisel (logon/logoff scripts).