Avatar billede nca Juniormester
10. august 2004 - 14:02 Der er 14 kommentarer og
1 løsning

Filkopiering med tråde af mange filer.

Jeg skal ha' kopieret en mappe med en masse undermapper og ialt ca. 70.000 filer (samlet størrelse 300 MB) fra en server og over på en PC'er i forbindelse med en programinstallation.
Der skal vises en indikator for processens forløb og brugeren må ikke kunne afbryde kopieringen. (En skjult tastekombination skal kunne afbryde kopieringen - evt. et password på Afbryd knappen)
Hvis jeg bruger TSHFileOpStruct ta'r processen ca. 45 minutter.
Jeg håber det kan gøres hurtigere med fx. tråde.
Er der én der kan brygge noget hurtig kode sammen?
Når programmet er færdigt skal det kaldes med parametre for source og destination og afsluttes med en errorcode.
Avatar billede stoney Nybegynder
10. august 2004 - 14:27 #1
70.000 tråde er måske i overkanten.
Kan du ikke lave en tråd for hver mappe og kopiere mappens filer ?

Hvis du kan vente til i aften kan jeg prøve at flække et eks. sammen til dig ?

Stoney
Avatar billede martinlind Nybegynder
10. august 2004 - 15:04 #2
Det vil næppe kører hurtigere med tråde, nettet og din server har nogle begrænsninger, og din locale HD den kan kun skrive en hvis mængde byte adgangen, så hjælper det ikke du har 100000 tråde der står og venter på at læse eller skrive

/Martin
Avatar billede nca Juniormester
10. august 2004 - 15:14 #3
Når jeg kopierer i XP fra CD-rom drevet til harddisken ta'r kopieringen ca 30 minutter.
Jeg har prøvet at zippe alle filer. Herefter ta'r kopieringen kun 5 minutter, men udpakningen ta'r 45 minutter :-)
Jeg tror at flaskehalsen ligger i fil-antallet. Filernes størrelse er ca 4 KB hver.
Avatar billede martinlind Nybegynder
10. august 2004 - 16:55 #4
hvilken net hastighed har du, den kan også ligge i noget diskcace størelse

/Martin
Avatar billede martinlind Nybegynder
10. august 2004 - 16:57 #5
Når jeg kopierer i XP fra CD-rom drevet til harddisken ta'r kopieringen ca 30 minutter. >> kunne tyde på at nettet er flaskehalsen, jeg ville prøve at lave nogle test, evt. starte et copy prog. flere gange og se om de hjælper, har du prøvet med flere dos-prompter og xcopy ??
Avatar billede nca Juniormester
10. august 2004 - 17:10 #6
>>martinlind
Jeg vil prøve i morgen med en xcopy for hver af mapperne for at se, om det speeder processen op.
Kopieringen kommer til at foregå på både 10 og 100 MB net. Nethastigheden er ikke noget problem hvilket tiden for kopieringen af alle filer samlet i én zip-fil beviser.
Avatar billede hrc Mester
10. august 2004 - 19:38 #7
Det er helt klat ikke overførselshastigheden. Det er skrivningen til FAT'en (eller NT's tilsvarende - hedder vist noget andet, men er det samme), der tager tid. Uanset om det er gammel Win9x FAT skrivninger eller NT, så falder hastigheden drastisk når der kommer rigtig mange filer i et katalog, så dine 70.000 meget små filer er noget der dræber.

Er der komprimering i katalogerne hvortil du kopierer? Måske kan det måske speede operationen op. En anden ting er at slå indeksering fra (via folderens egenskaber/avanceret)

Trådene er ikke en fordel her: Forestil dig harddisken fise frem og tilbage over disken, skrivende een fil i ét katalog, stoppe halvejs og arbejde for en anden tråd, skifte til en tredie osv. Din disk dør! En enkelt process med en passende buffer bør være hurtigst. Hvis du kører SCSI kan det måske være en fordel med et par tråde pga. den intelligente diskcontroller.

Endelig så kan du jo bruge Symantecs Ghost til at kopiere hele partitionen over til en anden disk. Det vil tage ca. 3-5 minutter.
Avatar billede martinlind Nybegynder
10. august 2004 - 19:57 #8
Ghost er klart det fedeste hvis det kan bruges her
Avatar billede nca Juniormester
11. august 2004 - 08:24 #9
Filkopieringen skal bruges i forbindelse med automatisk udrulning af software på maskiner med NT og XP. De dårligste maskiner har en processor på 400 MHz og de fleste sidder på et 10 MB net. Jeg er af samme opfattelse som hrc, men havde håbet at der var en genvej ét eller andet sted.
Avatar billede borrisholt Novice
11. august 2004 - 11:17 #10
som hrc skriver, så er tråde (i flertal) ikke ne fordel. Men en enkelt tråd kunne saktens hjælpe dig ...

TShFileopStruct er meget langsom til at tælle filstørelsen sammen ... Jeg kan godt skrive dig en dims der kopierer dine filer fra a til b, samtidig med den viser dig en status, du ved tid og mb tilbage.... Hvis det kunne have din interesse ?

Jens B
Avatar billede borrisholt Novice
11. august 2004 - 11:18 #11
En anden løsning, ville være at zippe det hele FØR du kopierer !

Jens B
Avatar billede nca Juniormester
11. august 2004 - 14:19 #12
>>borrisholt
Jeg er meget interesseret i en dims.
Mht. til ZIP, se kommentar fra 10/8 15:14 ;-)
Avatar billede nca Juniormester
10. december 2004 - 09:14 #13
>>borrisholt
Hvordan går det med den dims, som du ville lave til mig?
Avatar billede hrc Mester
10. december 2004 - 12:44 #14
nca: Du kan evt. selv hente en zipper hjem og lege lidt med den. Dynazip har jeg kun haft gode erfaringer med - og trial'en er fuldt funktionsdygtig idet de stoler på at man betaler hvis komponenterne bruges.

Du har bl.a. muligheden for at zippe til hukommelsen. Hvis du henter en liste af filer og deler dem op i klumper på 1000 filer, så tror jeg du kan vinde en del. Den største hurdle er nok stadig at skrive til filallokeringstabellerne dvs. udenfor vores rækkevidde.

Sådan en kan ikke være svær at skrive, men hvis Borrisholt har gang i et eller andet, så kan jeg næppe gøre det pænere.
Avatar billede nca Juniormester
15. december 2004 - 10:11 #15
Da borrisholt er stoppet, lukker jeg hermed spørgsmålet
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester