ot Slavei Karadzhov(6-02-2007)

reiting (14)   [ dobre ]  [ zle ]

Printer Friendly Variant za otpechatvane

S publikuvaneto na koda na saita kato svoboden softuer, publikuvahme i niakolko interesni skripta za suzdavane na arhivi na sudurzhanieto na vazhni direktorii ili bazi ot danni kakto i tiahnoto razprashtane po drugi survuri.

V tazi statiia shte se opitam da vi zapoznaia s vuzmozhnostite im.

Ot kude da svalite prilozhenieto

Ima dve vuzmozhnosti.
Ednata e da svalite poslednata versiia na maintainer paketa ot
http://openfmi.net/frs/?group_id=177
Drugata e da svalite posledna SVN versiia. Tova mozhe da napravite s komandata:
svn checkout https://svn.openfmi.net/linux-bg/trunk/maintainer/

Iziskvaniia za rabota s prilozhenieto

Skriptove izpolzvat slednite vunshni programi: cp, mv, tar, mysql, scp.
Dopulnitelno se nuzhdaete ot modula Expect i Net::FTP ako iskate da izpolzvate SSH i FTP za svaliane ili kopirane.
Tezi moduli mozhe da svalite ot CPAN. (perl -MCPAN -e shell).

Primeri

Primeri kak mozhe da izpolzvate maintainer.pl

maintainer.pl e suzdaden za da ulesni zadachata po arhiviraneto na baza danni, fail ili direktoriia i kopiraneto na arhivite na otdalechen survur posredstvom SSH ili FTP.

maintainer.pl se startira s dva argumenta ot komandniia red - "iztochnik" i "kraina tsel" I dvata argumenta izpolzvat tozi format: [encaps:]protocol://user:password@base/details Vizhte primerite po-dolu za podrobnosti

Primer 1

CHesta zadacha v nashi dni e kopirane na sudurzhanieto na mysql baza ot danni i arhiviraneto na tova sudurzhanie vuv fail. Tova mozhe da se napravi sus slednata komanda:
$ maintainer.pl mysql://username:password@host/database/ tar:///local/file.tgz

Primer 1.1

Tui kato startiraneto na tazi komanda ot komandniia red ili ot vashiia crontab mozhe razkrie taina informatsiia, kato vashata parola za mysql naprimer, na drugite potrebiteli, to e dobre sekretnata informatsiia da se zapishe v config.pm faila.
Tova stava po sledniia nachin. Otvariate config.pm faila i v nego dobaviate sledniia red:
$CONFIG{'DB_PASS'} = 'my_db_pass'; Sled koeto izpolzvaite [DB_PASS] v komandniia red, vmesto istinskata parola.
Skriptut maintainer.pl avtomatichno shte zameni [DB_PASS] sus zadadenata ot vas stoinost. V sluchaia tova e "my_db_pass".

Sled kato ste dobavili vashata parola v konfiguratsionniia fail, mozhe da izpulnite komandata po sledniia nachin:
$ maintainer.pl mysql://username:[DB_PASS]@host/database/ tar:///local/file.tgz

Vizhte faila config.pm za podrobnosti.

Primer 2

Pazeneto na arhivite na bazata ot danni na sushtiia hard disk na koiato se namira tia, ili pazeneto na arhivite na dadena direktoriia, ne e dobra ideia, zashtoto ako hard diska se razvali, to gubite i arhivite. Zatova e dobra ideia da kopirate vashite arhivi na otdalechen survur.
Tova mozhe da se napravi po sledniia nachin:

$ maintainer.pl mysql://username:password@host/database/ tar:ftp://user:[FTP_PASS]@server/full/path/to/file

V tozi primer vzemame informatsiiata ot mysql, arhivirame ia s "tar" i posredstvom FTP izprashtame arhiva na otdalechen survur.

Obrabotvashti pod-komandi

Mozhe bi ste zabeliazali, che "tar:ftp://user:[FT..." ne izglezhda kato tova koeto ste ochakvali "ftp://user:[FT...". Komandata "tar" predi "ftp" e komandata koiato se grizhi za obrabotvaneto na informatsiiata predi izprashtaneto i s FTP.

Primer 2.2

Mozhe da izpulnite komandata po-sledniia nachin, ako iskate da izpratite vashite arhivi na otdalechen survur posredstvom SSH za po-goliama sigurnost:

$ maintainer.pl mysql://username:password@host/database/ tar:ssh://user:[SSH_PASS]@server/full/path/to/file
Zabelezhka otnosno sigurnostta:
Za predpochitane e da NE slagate root paroli za SSH, a da izpolzvate klyuchove vmesto tova. Razbira se vie sami reshavate.

Primer 3

Dosega vi demonstrirahme kak baza mozhe da se arhivira i izprati na otdalechen survur, sega shte vi pokazhem kak direktoriia mozhe da se arhivira.
$ maintainer.pl file:///important/directory/ tar:ssh://user:[SSH_PASS]@server/full/path/to/file
$ maintainer.pl file:///important/directory/file tar:ssh://user:[SSH_PASS]@server/full/path/to/file

Poddurzhani "protokoli"

V momenta mozhe da izpolzvate: file, mysql, ftp, ssh bilo to za opisvane na "iztochnik" ili za opisvane na "kraina tsel". tar mozhe da izpolzvate samo za "kraina tsel" ili kato komanda obrabotvashta informatsiiata predi obrabotvaneto i ot protokola grizhesht se za "krainata tsel".

Primeri kak mozhe da izpolzvate cleaner.pl

cleaner.pl e skript koito iztriva failove otgovariashti na opredelen shablon i po-stari ot opredelen period.
Skriptut izpolzva 3 argumenta:
1 - shablona na faila
2 - tip vreme
3 - stoinost vreme

Primer 1: Ako iskate da iztriete vsichki failove v direktoriiata /tmp po-stari ot 4-ri mesetsa:
$ cleaner.pl "/tmp/*" months 4
Zabelezhka: Kavichkite pred i sled shablona sa ZADULZHITELNI.
Za tip vreme mozhe da posochite slednite stoinosti:
timestamp - tretira 3-iiat argument kato sekundi sled 1970-ta godina.
date - smiata 3-iiat argument za data. Datata se zadava vuv format YYYY:MM:DD:HH:II
years - tursi za failove po-stari ot "stoinost vreme" godini.
months - tursi za failove po-stari ot "stoinost vreme" mesetsi.
days - tursi za failove po-stari ot "stoinost vreme" dni.
hours - tursi za failove po-stari ot "stoinost vreme" chasove.
minutes - tursi za failove po-stari ot "stoinost vreme" minuti.

Avtomatizirane na neshtata

Lesno mozhe da avtomatiziraneto praveneto na arhivite s maintainer.pl i cleaner.pl kato gi dobavite kum vashiia crontab.

Eto i niakolko "istinski" primera ot crontab na linux-bg.org survura:
 # ----------------------------------------------------------------------------------
 
 # Suzdavane na kopiia na bazata vseki den
 15 4 * * *  /path/to/script/maintainer.pl 'mysql://[DB_USER]:[DB_PASS]@[DB_HOST]/[DB_DATABASE]' 'tar:///path/to/backup/lbg-db-[__YMD__].sql.tgz' 1>/dev/null 2>>/path/to/backup/backup.log
 
 # Izprashtane na sedmichno kopie na bazata posredstvom SSH na otdalechen survur
 7  5 * * 5  /path/to/script/maintainer.pl 'file:///path/to/backup/lbg-db-[__YMD__].sql.tgz' 'ssh://[SSH_USER]:[SSH_PASS]@[REMOTE_SERVER]/full/path/to/backups/lbg-db-[__YMD__].sql.tgz' 1>/dev/null 2>> /path/to/backup/backup.log
 
 # Suzdavane na kopie na direktoriiata s dannite
 23 5 * * 5,2  /path/to/script/maintainer.pl 'file:///path/to/data/data/' 'tar:///path/to/backup/lbg-data-[__YMD__].tgz' 1>/dev/null 2>>/path/to/backup/backup.log
 
 # Izprashtane na kopieto vednuzh v sedmitsata na otdalechen survur.
 1  6 * * 3 /path/to/script/maintainer.pl 'file:////path/to/backup/lbg-data-[__YMD__].tgz' 'ssh://[SSH_USER]:[SSH_PASS]@[REMOTE_SERVER]/full/path/to/backups/lbg-data-[__YMD__].tgz' 1>/dev/null 2>>/path/to/backup/backup.log
 
 # Iztrivane na failove po-stari ot dva mesetsa na lokalnata mashina
 15 14 * * 6 /path/to/script/cleaner.pl "/path/to/backup/lbg-*.tgz" months 2
 
 # ----------------------------------------------------------------------------------
 
Tova e. Zabavliavaite se :)

Zabelezhka: * maintainer.pl i cleaner.pl sa chast LBG proekta: http://www.linux-bg.org.
* Saitut na proekta se namira na adres: http://openfmi.net/projects/linux-bg/


<< Prost i efektiven nachin za backup s rsync | Programirane grafichen interfeis (GUI) s Lazarus i freepascal >>