Ajutor. Platesc 100 de euro

Scripturi scrise pentru interpretorul tau de comenzi

Ajutor. Platesc 100 de euro

Mesaj necititde wanted4life » Mie 27 Iun 2012 1:49 am

Am si eu o mare mare nevoie de ajutor va rog frumos.
Am si eu nevoie de o comanda care sa imi execute urmatoarea operatiune intr-un timp mult mai scurt.
De preferabil in maxim 20 de minute.

Mai exact am asa:
1: Am un folder in care am 400.000 de fisiere cu extensia .php ( nu intrebati alte detalii ca e complicat :D )
2: In toate fisierele am un text identic predefinit de mine initial ( TEXTPENTRUREPLACE )
3: Vreau sa modific textul "TEXTPENTRUREPLACE" cu "TEXTNOUREPLACED" in toate cele 400.000 de fisiere intr-un timp cat mai scurt.

Am incercat cateva varianteinsa timpul este foarte mare.
Exemplu:

DURATA = PESTE 6 ORE COMANDA = locate /home/folder1/ -type f -name "*.php" -exec sed -i 's/TEXTPENTRUREPLACE/TEXTNOUREPLACE/g' {} \;
DURATA = PESTE 6 ORE COMANDA = find /home/folder1/ -name '*.php' -type -f -print0 | \ xargs -0 -n 50 perl -pi -e 's/TEXTPENTRUREPLACE/TEXTNOUREPLACE/g'
DURATA = PESTE 5 ORE COMANDA = find /home/folder1/ -name '*.php' | xargs perl -pi -e 's/TEXTPENTRUREPLACE/TEXTNOUREPLACE/g'
DURATA = PESTE 4 ORE COMANDA = xargs -0 -n 10000 perl -pi -w -e 's/TEXTPENTRUREPLACE/TEXTNOUREPLACE/g'' ~/home/folder1/*.php
DURATA = 3 ore si 25 de minute COMANDA = grep -rl 'TEXTPENTRUREPLACE' /home/folder1/ | xargs sed -i 's/TEXTPENTRUREPLACE/TEXTNOUREPLACE/g'

Deci cel mai bun timp pe care am putut sa il scot a fost de 3 ore si 25 de minute.

Eu am nevoie de o comanda sau un script care sa imi permita sa fac aceeasi operatiune intr-un timp mult mai scurt. de preferabil ar fi maxim 20 de minute sau sa-mi foloseasca resursele la maxim.
Tin sa specific faptul ca o singura instanta de replace de acest gen imi consuma 0,5% din procesor si maxim 200 MB de ram.
Nici cache-ul la HDD nu cred ca il umple sau ceva pentru ca daca folosesc 10 instante de genul asta, scot un timp de 5 ori mai rapid.
Adica daca dau sa-mi faca intr-o instanta 10 replace-uri dureaza cam 35 de ore, dar daca dau sa mi le faca pe toate 10 de-o data dureaza 6-8 ore maxim.

Dealtfel, orice as face pe server nu ingreuneaza procesul atata timp cat nu execut aceeasi comanda.
Spre exemplu, am dat sa arhivez 5 astfel de foldere de-o data iar timpul de replace pe un astfel de folder a ramas tot 3 ore si 25 de minute.

Folosesc un centos 6.2 cu cpanel pe el.
Procesor intel quad core, 4GB de ram, un hdd pt sistem + 3 hdd de 3TB ( 5400 rotatii pe minut -> 600MB/s viteza -> 32MB buffer ).
Nu folosesc interfata pentru linux. este un server web.


Astept si eu un raspuns si sper ca cineva sa ma ajute intr-un fel sau altul.

Sunt dispus sa platesc 100 de euro pentru cel care imi ofera solutia prin care sa fac replace la 400.000 de fisiere in maxim 20 de minute.

Sa mai fac si alte precizari poate sunt de ajutor:

1: Am observat ca daca folosesc aceeasi comanda pe un folder in care sunt maxim 10.000 de fisiere, le face in cateva secunde, maxim un minut.
5000 de fisiere le face in 10 secunde.

Parerea mea cred ca ar trebui un script care sa faca un index cu toate fisierele si sa il puna sa faca replace la primele 5000 de fisiere, dupaia la urmatoarele 5000 si tot asa.
Astfel, ar putea face 400.000 de fisiere in vre-o 15 minute + 5 minute maxim sa faca acel index, s-ar incadra in cele 20 de minute.
Numai ca eu nu stiu sa scriu astfel de scripturi :(


Am incercat si varianta o alta varianta.
Am pus sa creeze foldere ( 23 in ttal) si am mutat in fiecare folder, fisiere care incep cu diferite litere din alfabet ( in folder 001 am pus toate fisierele care incep cu litera "a" in folderul 002 cu "b" si tot asa;.
Nici asta nu mi-a oferit un rezultat mai bun.
A durat cam 2 ore sa faca replace-ul, dar a mai durat inca o ora sa creeze folderele, sa mute fisierele in foldere, sa mute fisierele din foldere inapoi in folderul mama si dupaia sa stearga directoarele.


Am incercat sa ii spun sa faca replace decat la fisierele care incep cu a* dupaia cu b* .. si tot asa.
per total a durat mai mult pentru ca a stat de fiecare data sa vada care fisiere incep cu a, care cu b.. probabil le-a numarat de fiecare data.


Astept si eu o solutie in speranta ca sunt si specialisti pe aici pentru ca toti pe care ii cunosc sunt mai incepatori si decat mine :(


Va multumesc anticipat.
wanted4life
 
Mesaje: 1
Membru din: Mie 27 Iun 2012 1:17 am

Înapoi la Scripturi shell

Cine este conectat

Utilizatorii ce navighează pe acest forum: Niciun utilizator înregistrat şi 1 vizitator