Sziasztok,
Van egy VPS amin fut apache+php+myqsl.
A web fájlokról (tömörítve) és az adatbázis dumpokról minden éjszaka az aznapi mentés helyben tárolódik 5 napig.
Minden éjszaka az azanapi mentés a saját gépemre másolódik át.
Van egy db könyvtár az adatbázis dompoknak, és egy web a web fájloknak.
4 weboldal fájljai a web mappában, 19 adatbázis fájljai a db mappában, és mind a saját nevű mappájába van mentve. pl. teszt1 adatbázis a teszt1 mappában
A mentések a /home/joda/mentes/ mappába felcsatolt merevlemezre mennek, 1 évre visszamenőleg tárolom.
Adatbázisok mappái:
/home/joda/mentes/db/teszt1
/home/joda/mentes/db/teszt2
/home/joda/mentes/db/drupal1
/home/joda/mentes/db/drupal2
web fájlok mappái:
/home/joda/mentes/web/weblap1
/home/joda/mentes/web/weblap2
/home/joda/mentes/web/weblap3
/home/joda/mentes/web/weblap4
Szükségem lenne egy olyan scriptre, amiben be tudom állítani, hogy pl. a 2015.03.05.-i-ei mentést másolja át a /home/joda/munka/ könyvtárba. A web fájlok a web mappába az adatbázis fájlok a db mappába kerüljenek, mind a saját nevű mappája alá, ugyanúgy, mint ahogy a mentésben van a struktúra.
Ez egy ideiglenes mappa, tartalma csak addig kell amíg lemezre írom, aztán törlöm.
A dátumot nekem mondják, hogy miről írjak lemezt, teljesen logikátlanul.
Kinek milyen ötelete lenne erre?
Előre is köszönöm a segítséget.
Joda.
Hozzászólások
szia,
nem egy bonyolult dolog. tudnám javallani esetlegesen a bash scriptet, olvass utána, kevés tudással is szép eredményeket lehet elérni.
---
debian stable
Köszönöm, nem vagyok programozó ezért kérek most segítséget hozzá.
Ennyi már megvan:
#!/bin/bash
echo Hello World
Akkor nézelődj kicsit, nem is olyan vészes ez!
https://help.ubuntu.com/lts/serverguide/backups.html
--
Tertilla; Tisztelem a botladozó embert és nem rokonszenvezem a tökéletessel! Hagyd már abba!; DropBox
A linkelt oldal a mentésről szól, és adott fájl visszaállításáról.
A mentés nekem már megvan.
Én a módosítás dátuma alapján szeretném bizonyos mappába másolni a fájlokat, és erre nem találom a megoldást.
Természetesen megoldható, de biztos, hogy azt akarod?
Egy óvatlan touch parancs, vagy egy fájl rossz könyvtárba másolása (és kitörlése) 2015.06.09-én az egyébként 2015.01.02-i mentés valamelyik fájlján/könyvtárán, és egy másnapi visszaállítás sorás csak lesel, hogy hová lett félévnyi anyag.
Mi akadályozza meg, hogy a backup eleve a backup napjának megfelelő nevű könyvtárba kerüljön?
Ha valami komolyan akadályozza, akkor mi akadályozza azt, hogy a könyvtárba bekerüljön egy pici metainfo fájl, amelynek neve vagy a tartalma a dátum?
Szóval figyeljünk picit jobban a(z utólagos) tervezésre, mint tót az édesanyjára.
+1
bash script roppant messze van a programozástól, ezért javasoltam azt.
---
debian stable
Ez azért elég diszjunkt és értelmetlen kijelentés!
ŐŐŐ, tényleg nem kötözködés miatt de talán a nevében is benne van. Bár tudom, ezen a bash dolgon megoszlanak a vélemények.
---
debian stable
Hiszen már lejjebb is beléd kötöttek! :)
Neve? A bash-ra gondolsz?
Vélemények?
Hallottam olyanról, aki meg volt győződve, hogy multitaskingra csak a VAX gépek processzora képes.
Olyannal viszont beszéltem, aki szerint a tranzakció, mint olyan, csak Oracle-ben létezhet.
Mivel a topicnyitó kijelentette, hogy nem tud programozni, lehetett volna egy értelmes hozzászólás:
Én sem tudok programozni, te sem tudsz programozni, ajánlom a bash scriptet (ahhoz én sem értek), és majd segítek.
Ja, a neve: script? Erre gondoltál?
No, akkor lenne egy kérdésem:
Az a
- végesállapotú gép elven működő
- kb. 100 automatát futtató (folyamatos, automatikus üzemű, önjavító)
- webet kiszolgáló
- adatbázisszerverrel kommunikáló
- 25.000.000 backupot kezelő
- 100 klienssel kapcsolatot tartó
- 4800 soros
bash script az
a) program
b) olajos hal
(Csak egy válasz jelölhető meg! ;)
Háttérinformációk:
A tudományos alaposságot mellőzve a következő program fajtákat ismerjük (no, ebbe aztán biztosan beleköt valaki!):
- szkript (interpretált, sőt a shell és a COMMAND.COM is egy command interpreter)
- p-code (ezt egy közbülső kódra fordítjuk)
- bináris (ezt "teljesen" lefordítjuk)
- gépi kód - ez meg nem is programnyelv
Ezen cuccosok mindegyike program, csak más eszközökkel készül és másképp fut.
bash script roppant messze van a programozástól, ezért javasoltam azt.
---
debian stable
Akkor forrasztják? Impregnálják? Mégis mi, ha nem programozás?
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
nem értem minek kell ehhez szkript, miért nem másolod át simán?
szerk.: sztem szedd kicsit össze a gondolataid, hogy tudd mit szeretnél is írd át a fenti kérést. pl. ilyenekre gondolok, hogy mindennap mi alapján választod ki a dátumot és a cél mappát ahova átmásolnád a mentést? stb.
--------------------
http://grant-it.com/
Átszerkesztve, remélem így már jobb lett.
hogy akarnád ezt hasznáni? mert a nyitóból nem tiszta, hogy most rendszeresen oda akarod pakolni, vagy egy egyszeri dolog kell?
Kérdés még, hogy a fileok nevéből kiderül-e, hogy mikori mentés, illetve hogy hogyan akarod megmondani, hogy melyik web/adatbázis mentése kell.
Szóval részletesebb specifikációt :)
- ilyen filejaim vannak
- minek a hatására
- melyiknek
- hova kéne kerülni
- és később minek kéne történni vele
Ismét átszerkesztve.
benne van a mentés fileok nevében valami dátum? vagy milyen ott a fileformátum?
Illetve jól értem, hogy ha azt mondják, hogy a márc 13-i mentés kell, akkor az összes db és web aznapi cucca kell?
+1, nem egy elhanyagolható kérdés.
---
debian stable
Az adatbázis dump fájloknál a fájlnévben benne van az adatbázis neve, és a dátum is 2015-06-09 formában.
A web fájloknál pedig(hogy ne legyen olyan egyszerű) 20150609 formában.
Az adott napi kérsénél az összes aznapi adatbázist és web fájl kell lemezre írjam.
Príma, így tiszta.
Ajánlom átolvasásra a find parancs manuálját, különös tekintettel a -name és (elegánsabb megoldás érdekében) az -exec paraméterre.
Ha azt megemésztetted, és érted, mit jelenthet az, hogy $1, $2, ..., már készen is vagy, csak le kell írni.
Nem értesz a bash-hez, és gondolom a fejlesztési idő minimalizálása lenne a cél, ezért faék egyszerűségű megoldást mondok: excel-ben (libreoffice, stb) legenerálod a visszamásoló shell script-et, az eredményt bedobod egy #!/bin/bash kezdetű text file-ba, adsz rá futtatási parancsot és elengeded.
Ehhez kell egy template, mittomén A1 cella a dátumot tartalmazza (javaslom, hogy text legyen), Az A2..An cellák pedig a megfelelő könyvtárakat, pl. db/teszt1, web/weblap2, stb.
Ha a 2015.03.05.-ei mentések a nevükben pl. a 20150305 string-et, akkor az
sort, ha pedig a valamilyen könyvtárstruktúrban vannak a dátumok, akkor pl. a
sor kell legenerálnod. Minimális excel tudással ez eléggé triviális, mittomén B2 tartalma
az első példára, már ha el nem írtam.
Köszönöm, ez már jó olyan mappára ahol nincs benne almappa.
mkdir -p /home/joda/munka/db/teszt1 && cp /home/joda/mentes/db/teszt1/*20150305* /home/joda/munka/db/teszt1/
Olyanban is meg lehetne oldani a lekérdezést ahol van almappa?
-r -R nem segített.
szerintem a cp -r kellene, annak rekurzívan kellene másolnia. Legalábbis nálam így működik
Én így próbálom, hogy ne kelljen minden mappára külön script:
cp -r /home/joda/mentes/db/*2015-06-09* /home/joda/munka/db/
De nem jó,
Ha bővül a az adatbázis ne kelljen a szkriptet bővíteni.
Adatbázisok mappái példafájlokkal:
/home/joda/mentes/db/teszt1/teszt1-2015-06-09-sql.gz
/home/joda/mentes/db/teszt2/teszt2-2015-06-09-sql.gz
/home/joda/mentes/db/drupal1/drupal1-2015-06-09-sql.gz
/home/joda/mentes/db/drupal2/drupal2-2015-06-09-sql.gz
Ja, hogy így. Szóval a db név szerint egyrészt külön könyvtárban is van, másrészt pedig a neve is tartalmazza a db nevet.
A fenti parancs nyilván nem jó, vagyis hát pont jó, mert olyat másolnál ami nincs is. Szóval az elvárásoknak megfelelően működik.
A fenti struktúrához viszont nem kell rekurció, egyszerűen csak ennyi:
Vagyis a /home/joda/mentes/db/ összes alkönyvtárából elmásolja a *2015-06-09*-re match-elő file-okat.
Így lehet egyszerűsíteni a dolgokat, ha a kiírt médián nem kell db-nként külön könyvtárban lennie.
Csak halkan mondom: baromi nehéz így segíteni, hogy csak csepegteted az infókat.
Miert nem csinalsz egy egyszeru templatet, amiben csak a datumot kell valtoztatnod?
Valami olyat mibt itt.
#!
EV=2015
HO=05
NAP=06
#Adatbazi Utvonalak
DB_1_SOURCE=/var/www/akarmi/dump/teszt1
DB_2_SOURCE=/var/www/akarmi/dump/teszt2
DB_3_SOURCE=/var/www/akarmi/dump/teszt3
DB_4_SOURCE=/var/www/akarmi/dump/teszt4
DB_1_DESTINATION=/home/joda/mentes/db/teszt1
DB_2_DESTINATION=/home/joda/mentes/db/teszt2
DB_3_DESTINATION=/home/joda/mentes/db/drupal1
DB_4_DESTINATION=/home/joda/mentes/db/drupal2
cp $DB_1_SOURCE/adatbazisnev-$EV-$HO-$NAP.tgz $DB_1_DESTINATION/adatbazisnev-$EV-$HO-$NAP.tgz
Valami ilyesmi nem működhet?
Használat:
./script 2015-05-01
Find megkeresi a fájlokat aminek a nevében benne van, hogy 2015-05-01 vagy 20150501 majd a cp --parents kapcsolója gondoskodik arról, hogy a forrással megegyező struktúrába másolódjon a munka könyvtárba. De lehet félreértettem és bonyibb. :)
nem, én is kb ide juttotam, csak még nem volt időm beírni fentebb. (mondjuk lehet, hogy az xargsnak kéne egy -L 1).
ez a "*${1//-}* ez zsírság :)
Köszönöm gemnonnak, és mindenkinek aki próbált segíteni!
Pont ilyenre vágytam, tökéletesen működik.
Én ilyet összerakni biztosan nem tudtam volna.
Köszönettel:
Joda