Ü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! :)
- 4844 megtekintés
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
- A hozzászóláshoz be kell jelentkezni
powershell:
foreach ($l in Get-Content foo.txt) {Copy-Item $l "foo/" -recurse}
- A hozzászóláshoz be kell jelentkezni
Huh, nagyon köszi!
Remekül bevált! :)
- A hozzászóláshoz be kell jelentkezni
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 hozzászóláshoz be kell jelentkezni
Van, pl. a powergui egesz jo, de a legtobb parancsra van alias is. Pl. ezt irhattam volna igy is:
foreach ($l in cat .\foo.txt) {cp $l "foo/" -recurse}
- A hozzászóláshoz be kell jelentkezni
Így egy fokkal barátságosabb. :)
Powergui, ha jól sejtem, nem windows alkatrész, csak letölthető.
Aki tudja, csinálja, aki nem tudja, tanítja... Hm... igazgatónak talán még jó lennék. :)
- A hozzászóláshoz be kell jelentkezni
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.)
- A hozzászóláshoz be kell jelentkezni
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. :)
- A hozzászóláshoz be kell jelentkezni
Van, PowerShell ISE. A PowerShell 3-as verziójától kezdve van benne IntelliSense.
- A hozzászóláshoz be kell jelentkezni
Google barátunk mindig segít: http://www.powershellpro.com/powershell-tutorial-introduction/logic-usi…
- A hozzászóláshoz be kell jelentkezni
Köszi! Ha lesz időm ismerkedek kicsit a PowerShellel, elég hasznos eszköz win alatt, ha ilyeneket kell csinálni.
- A hozzászóláshoz be kell jelentkezni
De ha nagyon utálod (én képtelen vagyok rávenni magam, hogy megtanuljam), akkor ott a cygwin ;)
Aki tudja, csinálja, aki nem tudja, tanítja... Hm... igazgatónak talán még jó lennék. :)
- A hozzászóláshoz be kell jelentkezni
Vagy, ha még elvetemültebb valaki:
http://win-bash.sourceforge.net/
http://gnuwin32.sourceforge.net/
--
PtY - www.onlinedemo.hu
- A hozzászóláshoz be kell jelentkezni
A mezei bash-t direkt nem említettem, mivel önmagában semmit sem ér egy linuxhoz szokott embernek.
Aki tudja, csinálja, aki nem tudja, tanítja... Hm... igazgatónak talán még jó lennék. :)
- A hozzászóláshoz be kell jelentkezni
Azért írtam a gnuwin-nel együtt.
--
PtY - www.onlinedemo.hu
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Ez a
-T -
majd a
< FileList
és a
-f - > TarFile
elég meredek. Inkább így (az egész):
tar -cz -b 1 -C Dir -T FileList -f TarFile
Ha már...
--
PtY - www.onlinedemo.hu
- A hozzászóláshoz be kell jelentkezni
Ilyet máshol is láttam, azt hiszem, nem ok nélkül szoktak rá páran. Csak az okát nem tudom, pontosabban nem emlékszem rá :(
Ettől függetlenül nem kizárt, hogy valóban "meredek" :)
Aki tudja, csinálja, aki nem tudja, tanítja... Hm... igazgatónak talán még jó lennék. :)
- A hozzászóláshoz be kell jelentkezni
Akkor, ha egy parancs kimenete a feldolgozandó lista, és a tar fájlt nem le kell tárolni, hanem át kell adni másnak (pl. base64-nek, és email attachmentet faragunk belőle), az más tészta. De itt ilyesmiről nem igazán van szó.
--
PtY - www.onlinedemo.hu
- A hozzászóláshoz be kell jelentkezni
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. :)
- A hozzászóláshoz be kell jelentkezni
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 $?)
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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Ó :)))
- A hozzászóláshoz be kell jelentkezni
Ok, akkor úgy látom jónak, ha inkább Rád hagyom :)
--
PtY - www.onlinedemo.hu
- A hozzászóláshoz be kell jelentkezni
Igazán megisztelő! ;)
Sajnos az előbbi kommentből kiharapódott a program. A teljesség kedvéért volt benne két kapcsos zárójel között néhány find, ami szakaszosan kérdezte le a dir struktúrát. Ennek az eredménye ment az átirányításba a file lista helyett.
- A hozzászóláshoz be kell jelentkezni
Teljesen mindegy, a "1 pipeline = 1 unix command" mindent tarolt.
--
PtY - www.onlinedemo.hu
- A hozzászóláshoz be kell jelentkezni
: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!
- A hozzászóláshoz be kell jelentkezni