Rengeteg könyvtár közül csak bizonyosak másolása

Üdv!

Van valakinek arra tippje, hogy hogy lehetne a következő problémát egyszerűen megoldani?

Van egy könyvtárban, abban közel 2000 további könyvtár (mindegyik egy szám, 1-től 2000-ig).
És van egy 600 számból álló számsorozatom, amelynek elemei random mód el vannak szórva 1-től 2000-ig.
(Ezt a számsort bármilyen kimenetben ellő tudom állítani: vesszővel, szóközzel elválasztva, vagy egy fájlban külön sorokban tárolva...)

És most jön a lényeg:
Szeretném ezeket a random számozott könyvtárakat átmásolni egy másik helyre.
Megőszülnék mire ezeket egyesével kijelölgetném, hát még ha a 600. után félreklikkelek :D
Szóval valahogy automatizálnom kellene, méghozzá Windows alatt.
Szóba jöhet bármi, konzol, TCM, SpeedCommander.
De ha minden húr szakad, akár linux is, max indítok egyet Live DVD-ről.

Előre is big thx az ötletekért! :)

Hozzászólások

Alapból szerintem rsync tud olvasni fájlból, de ha minden mappanevet egy szövegfájlba teszel (egy sor/egy mappanév), akkor akár így is:

for i in $(cat file); do
...
done

De a tar -T is megcsinálja Neked, aztán egyben átmásolod az egészet, ahová kell, ott meg szétszeded. Live CD helyett és cifs mounttal felcsatolnám a win-t.

De lehet, hogy lesz jobb ötlet, mert szerintem a powershell lesz a barátod, ám ahhoz nem értek.
--
PtY - www.onlinedemo.hu

powershell:

foreach ($l in Get-Content foo.txt) {Copy-Item $l "foo/" -recurse}

Windows-ban van beépítve olyan editor, ami kódkiegészítést is tud a powershell-hez?
Utálatom egyik fő oka a hosszú azonosítókban rejlik.
És csak azért kérdezem, mert sok meglepetés ért már win7 alatt, hogy olyan featúrák kerültek bele, amiről eszembe nem jutott volna, hogy beépített alkatrészként keressem. (pl. netsh)

Aki tudja, csinálja, aki nem tudja, tanítja... Hm... igazgatónak talán még jó lennék. :)

A Programmers' Notepad is kapott sémát a kieghez, ezért sejtem, hogy az ikertesó, a Notepad++ is.

(Egyébként jól jelzi, hogy mennyire szükség volt valami normálisan programozható shellre, hogy a cmd.exe a for iszonyatával véletlenül sem jelent meg az első tippek között.)

Hogy te miket tudsz...
Nekem meg sem fordult a fejemben, hogy már ilyen is van a cmd.exe-ben (nem a for, hanem hogy képes fájlokból is kivenni a "tokeneket" és azokon végigsétálni)
És igazad van, ez valóban merő egy borzalom. :)

Aki tudja, csinálja, aki nem tudja, tanítja... Hm... igazgatónak talán még jó lennék. :)

Ami élesben is működik:

tar -cz -b 1 -C Dir -T - -f - < Filelist >TarFile

- érdemes felrakni a cygwint
- a paraméterek
Dir = "Van egy könyvtárban"
Filelist = az előbbi könyvtárhoz relativ file lista, egy sor = egy path
TarFile = a stdout mehet bele, vagy akár ssh segítségével egy másik gépre - az átivitelt már nem kell tömöríteni

A windows a hibás buffer cache kezelése miatt a nagy számú path lekérdezésnél felzabálja a memóriát.
Meg lassú is. Egyszerű esetben a find parancs gyorsabban előállítja a listát.

Az egészen más téma. Nem, én kimondottan ilyet láttam, hogy a fájlt irányították a stdin-be valamiért. De az okra nem emlékszem.
Találgatni tudok csak, hogy esetleg valami bugos volt x rendszeren, netán kompatibilitási okok miatt stb., de konkrét emlékem már nincs róla.

Aki tudja, csinálja, aki nem tudja, tanítja... Hm... igazgatónak talán még jó lennék. :)

Meredek? Ez tetszik!
Tényleg elfeledtem, hogy fölülre oda vagyon írva: windóz.
Az eredeti sor az alábbiak szerint néz ki. Akkor ez függőleges?
Pedig ez csak elrakja a hálózati másolás eredménykódját.

ExitCode $($LIMIT_SPEED $CMDSSH -p ${RPORT:-22} ${RLOGIN:-Xbackup}@$RHOST "/bin/tar -cz -b 1 -C $(GetParam base.path $FPROP) -T - -f -" < $FCOPY >$FTAR 2>$REASON ;echo $?)

Ez ugye csöppet más, mint az igény. Egy másik megoldásból kiollózni valamit, ami ide passzol, azért illik átalakítani, hogy nézzen is ki valahogy.

Igen, meredek. Nem vízszintes.

Nem mondok olyat egy parancsnak, hogy használja fájlként a stdint és a sdtout-ot, hogy aztán mindkettőt egy fájllal helyettesítsek be, mert fölösleges. Nem hibás, csak fölösleges.

Kb. olyan, mint a

cat valamifile | grep 'izé'

Nem is várom el, hogy megértsd, miről írok...
--
PtY - www.onlinedemo.hu

Az igény:
Első bekezdés kipipálva = filelista soronként jó hozzá.
Nem tudjuk milyen windows. Ez a megoldás (ebben a pillanatban is) kb. 10 különböző windowson + linuxon működik.
Bűnös vagyok, tényleg ollóztam. DE. Nem derült ki, hogy azonos gépen vagy két gép között kell másolni.
Ez a megoldás mindegyikre jó, mivel az eredeti sor - ahonnan másoltam - tar programja a szomszéd gépen fut, majd az ssh 0 (stdin) csatornáján érkeznek az adatok. Azt meg nem tudom röptében átnevezni diszken levő valamivé, hanem bele kell írni.
Ezzel szemben, ha ugyanarra vagy másik gépre is kell másolni akkor a ">file" részt kell cserélni kb. "|tar xzf -" szerű dologra. Lehet benne -C is és akkor a dir struktúra áthelyezése is megoldható.
Ez a megoldás még windózon is kisebb terhelést okoz...
A rossz hír: maga a dd, tar, cpio stb is így működik. Mindig kettő van belőlük, mint a NAV ellenőrökből.

Relax.
Mondtam, hogy nem a megoldás helyességével van a baj, és elhiszem, hogy ahonnan származik a kód, ott meg van rá az ok, hogy miért.
Csak jeleztem, hogy nem szép, that's it - de pontosan ugyanazt eredményezi, amit a másik módon.
Remélem, fegyver nincs Nálad!
--
PtY - www.onlinedemo.hu

Biztosíthatlak, hogy nem táplálok ellenséges érzelmeket!
Éppen itt csücsült vi-vel megnyitva egy 3500 soros program, és ráhúztam az egeret ;)
Csak azon - nem megsértődtem - csodálkoztam, hogy miért nem "szép". Attól még lehet praktikus!!
Talán éppen az az előny, hogy így írtam le a megoldást, mert ebből a vak is láthassa milyen módon lehet az igényekhez átalakítani. A hiba abban rejlik, hogy nem fejeztem be.
Technikailag meg nem tudjuk milyen módon áll elő a paraméter input illetve hogyan használják fel az outputot. Az adatmennyiság szempontjából lehet hátránya az átirányításnak, de ezzel lehet számolni.
Nomármost: okosok kitaláltak egy 16^5 dir struktúrát. Ha megfigyeled a figyelmeztetésemet a túlterhelésről, az nem okoskodás, hanem tapasztalat. Ilyeneknek a listázása közben rohad a vindóz.
Tehát: a ez megy a tar filelistájába.
Ez meg definíció szerint is 1 pipeline = 1 unix command. És ekkor nem kell magyarázni figyejmá'amikor ígymegigyvan akkó... Szóval ez nem nemszép, hanem CSO-KÍÍ-TÓ :)))

:D És még rímel is, mert tar-ról írkálunk!
Pedig ezt a definíciót nálam jóval nagyobb emberek írták le.
A klasszikus unix pedig egy filozófia. Erről van egy kis történetem:
Elég régen egy barátommal bevezető oktatást tartottunk a unix alapjairól. Mindenki meg volt elégedve.
Később, kocsma sör stb. És amikor már némi viszki is fogyott, a megrendelő - szintén barátunk kifakadt:
- Szar volt az oktatás. - Elhűltünk. Magyarázkodtunk. Mi tényleg felkészültünk, minden fontos dolgot elmeséltünk... - Hát ez az! Azt nem mondtátok, hogy MENNYIRE FONTOS!