Kuidas kopeerida faile mitmesse arvutisse: Difference between revisions

From ICO wiki
Jump to navigationJump to search
Mmaemets (talk | contribs)
Mmaemets (talk | contribs)
 
(8 intermediate revisions by the same user not shown)
Line 2: Line 2:


Failide kopeerimiseks mitmesse arvutisse on erinevaid võimalusi.<br />
Failide kopeerimiseks mitmesse arvutisse on erinevaid võimalusi.<br />
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).<br />  
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.  
<br />
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).<br />  
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.
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.


Line 22: Line 24:


Kui eeldused on täidetud, siis tuleb kirjutada skript. Skript võib olla ka nii lihnte nagu järgnev:<br />
Kui eeldused on täidetud, siis tuleb kirjutada skript. Skript võib olla ka nii lihnte nagu järgnev:<br />
   xcopy „\\srv2003\Shared\file.txt“ „\\Marikaxp\test\“<br />
   xcopy „\\ServerName\Shared\file.txt“ „\\DestinationComputer\test\“<br />
kus xcopy on käsk ning esimesel kohal kopeeritava faili asukoht koos faili nimega ning teisel kohal lõppasukoht kopeeritavale failile.<br /> Salvestades selle rea *.bat või *.cmd faili ning kirjutada analoogsed read ka teistele arvutitele ning failidele, saabki kopeerida mitmeid faile mitmetesse arvutitesse.  
kus xcopy on käsk ning esimesel kohal kopeeritava faili asukoht koos faili nimega ning teisel kohal lõppasukoht kopeeritavale failile.<br /> Salvestades selle rea *.bat või *.cmd faili ning kirjutada analoogsed read ka teistele arvutitele ning failidele, saabki kopeerida mitmeid faile mitmetesse arvutitesse.  
Samuti saab kopeerida teatud tüüpi faile – toodud näide tuleks siis asendada selliselt:<br />
Samuti saab kopeerida teatud tüüpi faile – toodud näide tuleks siis asendada selliselt:<br />
Line 31: Line 33:
Näiteks selline VB Script (script_copy.vbs):<br />
Näiteks selline VB Script (script_copy.vbs):<br />
   Const ForReading = 1
   Const ForReading = 1
   Const OverwriteExisting = TRUE  /*Kirjutab failid üle, kui juba on ees samanimeline fail*/
   /*Kirjutab failid üle, kui juba on ees samanimeline fail*/
  Const OverwriteExisting = TRUE 
   Set objFSO = CreateObject("Scripting.FileSystemObject")
   Set objFSO = CreateObject("Scripting.FileSystemObject")
   Set objFile = objFSO.OpenTextFile("\\ServerName\Shared\computers.txt") /*arvutite nimekiri avatakse*/
  /*arvutite nimekiri avatakse*/
   Set objFile = objFSO.OpenTextFile("\\ServerName\Shared\computers.txt")
   /*Tsüklis iga rida computers.txt failis käiakse läbi ja kopeeritakse fail file.txt kausta test*/
   /*Tsüklis iga rida computers.txt failis käiakse läbi ja kopeeritakse fail file.txt kausta test*/
   Do Until objFile.AtEndOfStream
   Do Until objFile.AtEndOfStream
Line 44: Line 48:
[[File:MM_2.jpg]] <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:
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 />
   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/ )
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 />
Seega domeeni serveris võiks skript olla kahes etapis:<br />
1.’Copy.bat’ sisu:<br />
1.’Copy.bat’ sisu:<br />
   dsquery computer –o rdn > \\srv2003\Shared\computers.txt
   dsquery computer –o rdn > \\ServerName\Shared\computers.txt
   script_copy.vbs
   script_copy.vbs
2.’Script_copy.vbs’ sisu:<br />
2.’Script_copy.vbs’ sisu:<br />
Line 56: Line 60:
   Set objFSO = CreateObject("Scripting.FileSystemObject")
   Set objFSO = CreateObject("Scripting.FileSystemObject")
   /*dsquery-ga saadud arvutite nimekiri avatakse*/
   /*dsquery-ga saadud arvutite nimekiri avatakse*/
   Set objFile = objFSO.OpenTextFile("\\srv2003\Shared\computers.txt")
   Set objFile = objFSO.OpenTextFile("\\ServerName\Shared\computers.txt")
   /*Iga rida computers.txt failis käiakse läbi ja kopeeritakse file.txt fail test kausta*/
   /*Iga rida computers.txt failis käiakse läbi ja kopeeritakse file.txt fail test kausta*/
   Do Until objFile.AtEndOfStream
   Do Until objFile.AtEndOfStream
Line 63: Line 67:
       computer = replace(strComputer, """", "")
       computer = replace(strComputer, """", "")
       strRemoteFile = "\\" & computer & "\test\"
       strRemoteFile = "\\" & computer & "\test\"
       objFSO.CopyFile "\\srv2003\Shared\file.txt", strRemoteFile, OverwriteExisting
       objFSO.CopyFile "\\ServerName\Shared\file.txt", strRemoteFile, OverwriteExisting
   Loop
   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’.
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 ’ServerName’ 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.
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.
Line 88: Line 92:
Seega domeeni serveris võiks skripti täiendada ka nii: <br />
Seega domeeni serveris võiks skripti täiendada ka nii: <br />
1.’Copy.bat’ sisu :<br />
1.’Copy.bat’ sisu :<br />
   dsquery computer –o rdn > \\srv2003\Shared\computers.txt<br />
   dsquery computer –o rdn > \\ServerName\Shared\computers.txt<br />
   dir \\ServerName\Shared /b > files.txt<br />
   dir \\ServerName\Shared /b > files.txt<br />
   script_copy.vbs<br />
   script_copy.vbs<br />
Line 94: Line 98:
== Domain Controller GPO Editor ==
== Domain Controller GPO Editor ==


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.
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). <br />
GPO Editori abil saab failide kopeerimist arvutitesse seadistada näiteks domeeni arvutisse sisse või välja logimisel (logon/logoff scripts). <br />
1.Ava GPO Editor<br />
 
1. Ava GPO Editor<br />
[[File:MM_3.jpg]] <br />
[[File:MM_3.jpg]] <br />
2.User Configuration -> Windows Settings -> Scripts (Logon/Logoff) - > Logon peal parema hiire klahviga klikk ja vali Properties<br />
 
2. User Configuration -> Windows Settings -> Scripts (Logon/Logoff) - > Logon peal parema hiire klahviga klikk ja vali Properties<br />
[[File:MM_4.jpg]] <br />
[[File:MM_4.jpg]] <br />
3.Avaneb skripti lisamise aken. Vajuta Add nuppu.<br />
 
3. Avaneb skripti lisamise aken. Vajuta Add nuppu.<br />
[[File:MM_5.jpg]] <br />
[[File:MM_5.jpg]] <br />
4.Avaneb faili otsimise aken. Otsi fail üles ja vajuta OK<br />
 
4. Avaneb faili otsimise aken. Otsi fail üles ja vajuta OK<br />
[[File:MM_6.jpg]] <br />
[[File:MM_6.jpg]] <br />
5.Vajuta veelkord OK<br />
 
5. Vajuta veelkord OK<br />
[[File:MM_7.jpg]] <br />
[[File:MM_7.jpg]] <br />
Logon skripte saab käivitada ka User Properties kaardilt Profile sakilt  (Active Directory Users and Computers -> parem klikk kasutaja nimel -> Properties -> Profile sakk -> Logon script)<br />
Logon skripte saab käivitada ka User Properties kaardilt Profile sakilt  (Active Directory Users and Computers -> parem klikk kasutaja nimel -> Properties -> Profile sakk -> Logon script)<br />
[[File:MM_8.jpg]] <br />
[[File:MM_8.jpg]] <br />
[[File:MM_9.jpg]] <br />
[[File:MM_9.jpg]] <br />
Või ka arvuti avamisel või sulgemisel (Startup/Shutdown scripts). GPO Editor -> Computer Configuration -> Windows Settings -> Scripts (Startup/Shutdown) <br />
Või ka arvuti avamisel või sulgemisel (Startup/Shutdown scripts). GPO Editor -> Computer Configuration -> Windows Settings -> Scripts (Startup/Shutdown) <br />
[[File:MM_10.jpg]] <br />
[[File:MM_10.jpg]] <br />
Startup/Shutdown skriptide lisamise protseduur on analoogne Logon/Logoff skriptide lisamisele.<br/>
Startup/Shutdown skriptide lisamise protseduur on analoogne Logon/Logoff skriptide lisamisele.<br/>


Line 124: Line 137:
http://blogs.technet.com/b/heyscriptingguy/archive/2007/05/15/how-can-i-copy-the-same-file-to-a-number-of-different-computers.aspx<br />
http://blogs.technet.com/b/heyscriptingguy/archive/2007/05/15/how-can-i-copy-the-same-file-to-a-number-of-different-computers.aspx<br />
http://www.w3schools.com/vbscript/vbscript_looping.asp<br />
http://www.w3schools.com/vbscript/vbscript_looping.asp<br />
Marika Mäemets DK21

Latest revision as of 21:20, 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 „\\ServerName\Shared\file.txt“ „\\DestinationComputer\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, saabki kopeerida mitmeid faile mitmetesse arvutitesse. 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 on sellise meetodiga palju käsitsi tööd nind kood veaohtlik.
Samas võib skript olla ka keerulisem ent lihtsam hallata. Näiteks selline VB Script (script_copy.vbs):

 Const ForReading = 1
 /*Kirjutab failid üle, kui juba on ees samanimeline fail*/
 Const OverwriteExisting = TRUE  
 Set objFSO = CreateObject("Scripting.FileSystemObject")
 /*arvutite nimekiri avatakse*/
 Set objFile = objFSO.OpenTextFile("\\ServerName\Shared\computers.txt")
 /*Tsüklis iga rida computers.txt failis käiakse läbi ja kopeeritakse fail file.txt kausta test*/
 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 > \\ServerName\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("\\ServerName\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 "\\ServerName\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 ’ServerName’ 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 > \\ServerName\Shared\computers.txt
dir \\ServerName\Shared /b > files.txt
script_copy.vbs

Domain Controller GPO Editor

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).

1. Ava GPO Editor

2. User Configuration -> Windows Settings -> Scripts (Logon/Logoff) - > Logon peal parema hiire klahviga klikk ja vali Properties

3. Avaneb skripti lisamise aken. Vajuta Add nuppu.

4. Avaneb faili otsimise aken. Otsi fail üles ja vajuta OK

5. Vajuta veelkord OK

Logon skripte saab käivitada ka User Properties kaardilt Profile sakilt (Active Directory Users and Computers -> parem klikk kasutaja nimel -> Properties -> Profile sakk -> Logon script)


Või ka arvuti avamisel või sulgemisel (Startup/Shutdown scripts). GPO Editor -> Computer Configuration -> Windows Settings -> Scripts (Startup/Shutdown)

Startup/Shutdown skriptide lisamise protseduur on analoogne Logon/Logoff skriptide lisamisele.

Kokkuvõte

Failide kopeerimiseks mitmesse arvutisse on palju võimalusi. Olenevalt kopeeritavate failide mahust, hallatavate arvutite arvust, tesotatava kopeerimise korratavusest jmt teguritest, tuleb valida sobivaim viis töö ära tegemiseks. Mõnikord ajab asja ära ka väga triviaalne skript ja teinekord ongi käsitsi kiirem töö ära teha, kui hakata suurt süsteemi sisse seadma.

Kasutatud materjalid

http://thebackroomtech.com/2009/06/11/howto-export-a-list-of-all-computers-in-an-ad-ou/
http://www.edugeek.net/forums/how-do-you-do/49033-copying-one-file-multiple-computers.html
http://www.pctips3000.com/how-to-create-and-use-logon-script-to-map-a-shared-folder-as-network-drive-for-all-domain-users-in-windows-server-2003/
http://blogs.technet.com/b/heyscriptingguy/archive/2007/05/15/how-can-i-copy-the-same-file-to-a-number-of-different-computers.aspx
http://www.w3schools.com/vbscript/vbscript_looping.asp

Marika Mäemets DK21