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.
- 4359 megtekintés
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
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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 hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
bash script roppant messze van a programozástól, ezért javasoltam azt.
---
debian stable
- A hozzászóláshoz be kell jelentkezni
Ez azért elég diszjunkt és értelmetlen kijelentés!
- A hozzászóláshoz be kell jelentkezni
ŐŐŐ, 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
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
bash script roppant messze van a programozástól, ezért javasoltam azt.
---
debian stable
- A hozzászóláshoz be kell jelentkezni
Akkor forrasztják? Impregnálják? Mégis mi, ha nem programozás?
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
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/
- A hozzászóláshoz be kell jelentkezni
Átszerkesztve, remélem így már jobb lett.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Ismét átszerkesztve.
- A hozzászóláshoz be kell jelentkezni
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?
- A hozzászóláshoz be kell jelentkezni
+1, nem egy elhanyagolható kérdés.
---
debian stable
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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
mkdir -p /home/joda/munka/db/teszt1 && cp /home/joda/mentes/db/teszt1/*20150305* /home/joda/munka/db/teszt1/
sort, ha pedig a valamilyen könyvtárstruktúrban vannak a dátumok, akkor pl. a
mkdir -p /home/joda/munka/db/teszt1 && cp /home/joda/mentes/db/teszt1/2015/03/05/mentes.tgz /home/joda/munka/db/teszt1/
sor kell legenerálnod. Minimális excel tudással ez eléggé triviális, mittomén B2 tartalma
="mkdir -p /home/joda/munka/"&A2&" && cp /home/joda/mentes/"&A2&"/*"&$A$1"&* /home/joda/munka/"&A2&"/"
az első példára, már ha el nem írtam.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
szerintem a cp -r kellene, annak rekurzívan kellene másolnia. Legalábbis nálam így működik
me@mystation:~$ mkdir joda
me@mystation:~$ cd joda
me@mystation:~/joda$ mkdir -p susu111gugu/1
me@mystation:~/joda$ mkdir -p susu111gugu/2
me@mystation:~/joda$ mkdir -p susu111gugu/3
me@mystation:~/joda$ cp -r *111* target/
me@mystation:~/joda$ ls target
susu111gugu
me@mystation:~/joda$ ls target/susu111gugu/
1 2 3
- A hozzászóláshoz be kell jelentkezni
É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
- A hozzászóláshoz be kell jelentkezni
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:
cp /home/joda/mentes/db/*/*2015-06-09* /home/joda/munka/db/
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.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
Valami ilyesmi nem működhet?
#!/bin/bash
cd /home/joda/mentes
find . -name "*$1*" -or -name "*${1//-}*" | xargs cp --parents -t /home/joda/munka
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. :)
- A hozzászóláshoz be kell jelentkezni
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 :)
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni