Fórum Root.cz
Hlavní témata => Software => Téma založeno: fotka 10. 11. 2010, 01:34:28
-
Ahoj, hledal jsem už 20minut a nemůžu to najít. Kdyby prosím někdo měl čas a chuť to sem napsat i pro ostatní?
Mám CentOS 5 a potřebuju zálohovat každý týden určitý adresář na FTP.
Potřebuji aby to:
1. adresář zagzipovalo
2. přihlásilo se na FTP
3. nahrálo a nahradilo zde již existující archiv
4. odhlásilo se to z FTP
Jde o zálohu webů, a chtěl bych si to vždy také stáhnout i k sobě na PC tak by bylo i ideální aby se to rovnou nakopírovalo ještě do složky /home/user/public_html/ nahradilo zde existující archiv a nastavily se práva 755
CronJob vždy v neděli by se nastavil takto:
crontab -e
* * * * 6 /etc/backup/backup.sh
Prosím mohl by to někdo sdílet ten bash kód?
-
1: man tar
2-4: man lftp
-
preco by mal byt archiv spustatelny ???
-
Pokud bys netrval na FTP, tak dobrým, rychlým a spolehlivým řešením by mohl být rdiff-backup. Jen místo FTP by bylo nutné použít SSH.
-
Tady to mas se zalohovanim databazi, coz mnoho webu vyzaduje.
http://www.experts-exchange.com/Software/Internet_Email/File_Sharing/FTP/Q_26104642.html
Staci si tam dodelat zalohovani adresare. A to vazne neni tak tezke, jak to vypada. ;o)
Googlil jsem to cca 1.345s vcetne odezvy googlu.
-
Děkuji, potřebuju to tak, jak píšu. Zabalení složky, skopírování na FTP a do jiné složky + nastavení práv abych si to mohl stáhnout z internetu.
Ten poslední odkaz je pravděpodobně na nějaký chybný skript,. je to dotaz..a v tom skriptu se moc nevyznám. Mysql zálohovat nepotřebuji.. Děkuji za případnou pomoc. F.
-
Fotka je srandovny uzivtel... Pravdepodobne riesi hosting a vsetko da spravit diskutujucim :)
bash + lftp
Nic viac nepotrebujes.
-
:D tak může to být užitečné nejen pro mě, ale i pro ostatní kteří si to v budoucnu přečtou. Kdyby prosím někdo se rozhodl odpověďět na toto téma a ukončit diskusi tím skriptem tak předem děkuji. Já ho bohužel sám nevymyslím a nenašel jsem vhodný.
-
1.
aby som mohol stiahnut (teda hocikto), tak prava 644 (resp. len 444). urcite NIE 755!
2.
uvedeny crontab sa spusti 1440 krat kazdu nedelu! Treba spusti len raz v nedelu (napr. o 05:00):
0 5 * * 6 skript
-
Skuste niejaky skript napisat, odskusat a poslat ho sem. Ja Vam ho velmi rad zrevidujem a dodam pripomienky. Nemam problem pre niekoho pisat skripty, ale vecsinou tieto prace fakturujem.
Urcite poznate porekadlo o hladnom cloveku a rybe...
-
Skuste niejaky skript napisat, odskusat a poslat ho sem. Ja Vam ho velmi rad zrevidujem a dodam pripomienky. Nemam problem pre niekoho pisat skripty, ale vecsinou tieto prace fakturujem.
Urcite poznate porekadlo o hladnom cloveku a rybe...
presne tak.
Najvecsi rpoblem preco ti ten skript nikto nenapisal je tvoj pristup a vyjadrovanie. Pripominas mi mojho kolegu, co by chcel vsetko, najlepsie zadarmo a za co najmensiu namahu.
Ako som si precital tvoj prvy prispevok, tak som mal dost a nulovu chut pomoct ti.
Hladal si 20 minut a nic. A co si hladal? Nebodaj hotovy skript presne tebe sity na mieru? To nenajdes alebo len vynimocne. 20 minut je nic. Hladaj, skusaj a mi ti radi pomozeme. Ale ty si sa len tvaril, ze si hladal, neskusal si nic a chces niekoho aby to za teba cele urobil.
Ten skript musis by schopny napisat sam alebo aspon jeho nedokonalu podobu. Je to par riadkov s pouzitim zakladnych prikazov linuxe ako tar, cp, ftp.
Od teba nieje vidiet ziadna snaha a to je tvoj najvecsi problem. To sa potom len tazko pomaha. Hlavne tvoju lenivost nezakrivaj slovami
"Ahoj, hledal jsem už 20minut a nemůžu to najít. Kdyby prosím někdo měl čas a chuť to sem napsat i pro ostatní?" " :D tak může to být užitečné nejen pro mě, ale i pro ostatní kteří si to v budoucnu přečtou. Kdyby prosím někdo se rozhodl odpověďět na toto téma a ukončit diskusi tím skriptem tak předem děkuji. Já ho bohužel sám nevymyslím a nenašel jsem vhodný."
Ty nepotrebujes najst vhodny ale urobit si vlastny skript.
Staci pouzit prikaz man tar , man cp, man ftp alebo pouzit google na najdenie manualovych stranok k tymto prikazom a za hodinku mas ten skript hotovy.
-
zabalenie adresara - zhruba 10 minut hladania a musis to najst
tar -czf nazov_suboru.tgz adresar_ktory_chcem_zbalit
skopirovanie suboru do piatich minut to musim najst
cp co_chcem_kopirovat kam_chcem_kopirovat
to iste s prikazom ftp (alebo inym podla toho aky ftp client pouzivas)
skusaj a nekopiruj. Tak sa nikdy nic nenaucis.
-
fotka: Myslím, že jsi už dostal dost materiálu, aby sis ten skript mohl vytvořit. Nejlepší je asi od Davida Strejce. Stačí z toho jen vyhodit řádky týkající se databáze. To zvládneš za domácí úkol.
A ten rdiff-backup bych na tvém místě také nezatracoval. Nechápu, proč stále trváš na FTP.
-
Díky, ten od D. Strejce mi přijde dost komplikovaný a nerozumím mu. Myslím že také nemusí být funkční protože je to dotaz, ne doporučení ta stránka. Neobsahuje funkce, které potřebuji. Mohl by to prosím někdo napsat? Možná by to bylo otázkou 2 minut?
-
Tady je jednoduchý skript pro archivaci TAR GZIP do adresáře a odeslání na FTP!
Gzipuje se rovnou do www složky. Má CentOS defaultně přepsání již existujícího souboru?
#!/bin/bash
NICK="nick"
PASS="pass"
DEST="ftp.server.com"
DIR="/home/user/public_html/backups.tgz"
ZAL="/home/backups"
tar -czf $DIR $ZAL
chmod 644 $DIR
lftp -d $DEST -u $NICK,$PASS -e "put $DIR; quit"
echo "ZALOHA DOKONCENA"
PS: člověk, který to psal má Debian..
A podle doporučení od DeadMaila tento skript nechám vykonat každou neděli v 5:00..
crontab -e
0 5 * * 6 /etc/backup/backup.sh
-
tar -czf $ZAL $DIR
-
tar -czf $ZAL $DIR
ee, jen promenne jsou nelogicky pojmenovane. Script je dobre
-
A vyskusal ste ten skript ci funguje? Som si 100% isty, ze fungovat nebude. Snaci sa pozriet do manualu lftp a zistite preco
-
jj, to LFTP je tam komplikované, nevim proč to nefunguje..
-
Pozrite si co robi parameter -d a co tam dosadzujete vy
-
Tady je jednoduchý skript pro archivaci TAR GZIP do adresáře a odeslání na FTP!
Gzipuje se rovnou do www složky. Má CentOS defaultně přepsání již existujícího souboru?
#!/bin/bash
NICK="nick"
PASS="pass"
DEST="ftp.server.com"
DIR="/home/user/public_html/backups.tgz"
ZAL="/home/backups"
tar -czf $DIR $ZAL
chmod 644 $DIR
lftp -d $DEST -u $NICK,$PASS -e "put $DIR; quit"
echo "ZALOHA DOKONCENA"
PS: člověk, který to psal má Debian..
A podle doporučení od DeadMaila tento skript nechám vykonat každou neděli v 5:00..
crontab -e
0 5 * * 6 /etc/backup/backup.sh
rozumies tomu aspon trochu? Na tvojom mieste si urobim vlastny primitivny skript bez premenych a podobnych veci ale hlavne nech tomu rozumiem. obycajne prikazy zretazene v jednom skripte. Ak nerozumies lftp pouzi ineho ftp klienta.
To echo by som vyhodil lebo ti je nanic, ked to bude spustat cron.
Po dalsie, ten skript nieje nijako osetreny. Dal by som aspon za prikaz tar a chmod && aby sa nasledujuci prikaz vykonal iba vtedy ak ten predosly skoncil uspesne viac tu - http://www.root.cz/clanky/hratky-z-radky-navratove-hodnoty/
tar -czf $DIR $ZAL &&
chmod 644 $DIR &&
lftp -d $DEST -u $NICK,$PASS -e "put $DIR; quit"
chmod ti urobi len vtedy ak uspesne zbali adresar
lftp spusti len vtedy ak sa uspesne zmenia prava
to lftp by malo vyzerat asi takto
lftp -u $NICK,$PASS $DEST -e "put $DIR; quit"
-
a co takhle neco overeneho. Ja pouziva jiz asi 6 let na dvou serverech toto : http://freshmeat.net/projects/plbackitup/ (http://freshmeat.net/projects/plbackitup/)
Vyzkousej, neni v bashi nybrz v perlu ale myslim, ze tve pozadavky hrave splni ... ma hodne konfiguracnich direktivit . Ja jsem naprosto spokojen.
-
Jak jste tu psali - pan Fotka chce jen - "DO IT 4 ME FREE - I am so layzyyyy"
Pro me toto neni na 10 minut ale cca na 3.5 protoze to delam dnes a denne, ale psat mu to fakt nechci - stejne jako pro me lidi nechteli psat nic a ja se pred sesti lety vztekal proc a proc a proc to delaj. Nic bych neumel a mozna by ze me byl kvalitni SALESMAN :o)))
Pokud chce pan Fotka delat webhosting, tak mu doporucuju Virtualmina. Tam se takovyma nesmyslama nemusi vubec zabyvat.
Ale umet v shellu ... bez toho bych si ani nezavazal botu. To fakt nejde chtit delat s UN*X like OS a mit tam pustene KDE nebo Gnome a modlit se, ze to prece naklikam.
Ja vim - trva to dlouho - boli to, breci se u toho, kladivem se rozbiji stroje, prichazi se o disky a tak dale, ale nakonec to nejak jde ne? ;o))
A pak se treba toto
tar czvf $DST_FILE $SRC && scp -i key_file $DST_FILE user@dsthost:$DST_FOLDER && rm $DST_FILE && echo "Backup maybe done ;o)" | mail -s "Backup report" admin@srchost
pise docela rychle ne? ;o)
Samozrejme, ze to nesplnuje pozadavek na FTP, ale FTP ... je rekl bych docela mrtve. Vseobecne. Uz to neni tak trendy jako pred dvaceti lety ;o)
-
David Strejc: Místo scp jsem se pro tyto účely naučil používat skvělý rsync. Ale to by pan Fotka musel slevit ze svého zastaralého FTP.
rsync -ae ssh $SRC user@dsthost:$DST_FOLDER
Se zbytkem souhlasím, až na to rozbíjení stroje. Ten za to chudák nemůže.
-
:o))))
rsync ... rdiff-backup ... bacula (moloch ;o)) - naprosto cokoli.
Stroj - ja mysilm, ze vobcas tam ten permonik proste je. Staci prijit druhy den a pak zmizne. Ale vobcas - nikdo mi nenakeca, ze tam neni. Treba "obcasne" core-dump ... netusim. Jasne ze je to v rukach. Ale na nekoho se to svest musi.
Bez uceni se s UN*X like delat fakt neda. Naklikat se to taky neda. Bud se da brecet, ze to nejde, nebo googlit, nebo se to naucit a googlit ;o)
-
este nacitat vstupne parametre z nejakeho conf file ;) a ides ;)
cat /etc/zaloha.conf
DST_FILE=/home/zaloha/zaloha.tar.gz
SRC= /home/zaloha/
DST_FOLDER=/home/zaloha/
#!/bin/bash
CFGFILE=/etc/zaloha.conf
if [ ! -f $CFGFILE ]; then
echo "No CONFIG file $CFGFILE!"
exit 1
fi
. $CFGFILE
.......
-
Ted uz by to mohl poskladat i deda mraz ;o)))
Ted uz je to vic puzzle nez cokoli jineho.
Peace 4 All.
--
UNIX LIVE FREE OR DIE
-
Děkuji,
je to takto správně tedy kompletně?
Mělo by to mít i tu fukci aby to jak na ftp, tak na lokálním adresáři nahradilo tens tarý archiv z minulého týdne..
#!/bin/bash
tar -czf $DIR $ZAL &&
chmod 644 $DIR &&
lftp -d $DEST -u $NICK,$PASS -e "put $DIR; quit"
[/quote]
crontab -e
0 5 * * 6 /etc/backup/backup.sh
Děkuji,
F.
-
Děkuji,
je to takto správně tedy kompletně?
Mělo by to mít i tu fukci aby to jak na ftp, tak na lokálním adresáři nahradilo tens tarý archiv z minulého týdne..
#!/bin/bash
tar -czf $DIR $ZAL &&
chmod 644 $DIR &&
lftp -d $DEST -u $NICK,$PASS -e "put $DIR; quit"
[/quote]
crontab -e
0 5 * * 6 /etc/backup/backup.sh
Děkuji,
F.
Niesom si istý či by to skôr nemalo byť ...
...
tar -czf $ZAL $DIR &&
chmod 644 $ZAL &&
lftp -d $DEST -u $NICK,$PASS -e "put $ZAL; quit"
...
-
Ahoj, to jsem zase já.
Vyzkoušel jsem tedy ten skript podle cl1d3
#!/bin/bash
tar -czf /home/user/public_html/domeny/domena/backups.tgz /home/backups &&
chmod 644 /home/user/public_html/domeny/domena/backups.tgz &&
lftp -d ftp.server.cz -u usernamekftpserveru,heslokftpserveru -e "put
/home/user/public_html/domeny/domena/backups.tgz; quit"
A spustil jsem to: sh b.sh:
a vyhodilo to postupně toto:
tar: Removing leading `/' from member names
tar: /home/backups/cpbackup/weekly/dirs/_var_lib_mysql_/mysql.sock: socket ignored
Potom se mi to podařilo přerušit takže nevím zbytek. Chci se Vás ale zeptat jestli nevadí to lomítko a jak udělat aby se zabalil i ten mysql.sock? To je myslim nějaká potvora..
A ještě.. protože se to spouští pod rootem ten skript tak to vytvoří ten archiv s právy root a skupinou root do adresáře jiného uživatele. Takový soubor pak nejde stánout přes prohlížeč. Jak donutím ten TAR aby nastavil automaticky správná práva pro ten soubor? Jde to aniž bych dal do skriptu chown user:user backups.tgz ?
díky, F.
-
Však jsi psal, že MySQL zálohovat nepotřebuješ. Takže bys měl raději ze zálohování vyřadit i celý adresář /var/lib/mysql.
Odstraňování lomítka je standardní záležitostí programu tar kvůli jednoduššímu rozbalování na jiném místě. Ale to bys už mohl vědět.
A proč tam nechceš dát chown?
-
Potřebuju tam mít celý adresář 1:1
Chown tam tedy dám.
Jak udělat aby se zabalil i ten mysql.sock? To je myslim nějaká potvora..
a je to tedy takto ten skript napsaný že to přepíše ten starý archiv backups.tgz na lokále i na ftp?
děkuji! Já ten výsledný skript pak nahodim do prvního příspěvku ať to k něčemu je také.
-
Potřebuju tam mít celý adresář 1:1
Chown tam tedy dám.
Jak udělat aby se zabalil i ten mysql.sock? To je myslim nějaká potvora..
a je to tedy takto ten skript napsaný že to přepíše ten starý archiv backups.tgz na lokále i na ftp?
děkuji! Já ten výsledný skript pak nahodim do prvního příspěvku ať to k něčemu je také.
CHOWN tam dávať nepotrebujete, predsa ten súbor ma nastavené práva že zapisovať doňho môže iba jeho vlastník ktorým bude predpokládam root ale všetci ostatní ho môžu čítať.
Zálohovať súbor mysql.sock nepotrebujete. Ten si databáza pri jej štarte vytvára automaticky.
A áno, skript prepíše starú zálohu novou.
-
Zálohovat adresář /var/lib/mysql je nesmysl. Byla by velká náhoda, kdyby se obnova takto zálohované databáze povedla. Musel bys totiž před zálohováním démona MySQL shodit a pak zase spustit. Živé MySQL se zálohuje příkazem mysqldump. Jinak to nemá smysl, data nebudou konzistentní.
Proč tvrdíš, že MySQL zálohovat nepotřebuješ a současně tvrdíš, že adresář /var/lib/mysql zálohovat potřebuješ? Tak se rozhodni: Chceš zálohovat MySQL nebo nechceš?
-
Děkuji za odpověďi.
Kit: Toto není třeba řešit. Jedná se o zálohu adresáře v němž je záloha cPanelu (účty i databáze i pár konfiguračních souborů -> cPanel full backup).
Pokud tedy to tar: /home/backups/cpbackup/weekly/dirs/_var_lib_mysql_/mysql.sock: socket ignored
by nemělo dělat problémy, tak je to v pořádku.
Pozor, Změna Plánu!..
Ta záloha má desítky GB a archivování není dobrý nápad. Tar to balí asi 5GB/30 minut nebo co. Bylo by asi lepší převádět celou složku /home/backups nebalenou na FTP..? Napadá mě takové nepěkné přejmenování složky na soubor..
#!/bin/bash
mv /home/backups /home/backups.delpripona &&
lftp -d ftp.server.cz -u usernamekftpserveru,heslokftpserveru -e "put
/home/backups.delpripona; quit" &&
mv /home/backups.delpripona /home/backups &&
Je to správně? co si o tom myslíte?
Děkuji
-
ty ses naprosto mimo. doporucuju precist (a hlavne si u toho zkouset) nejakou knizku o zakladech linuxu.
abych nebyl uplne OT, tak ti trochu poradim... zkus z toho taru odebrat parametr -z (a zjisiti si co se vlasne stane)
-
Díky, no teď už to tarovat radši nechci protože to trvá hrozně dlouhou dobu. když jsem zkoušel formát .tar tak jsem dal jen -cf
Teď myslím že by bylo lepší použít tu metodu kopírování bez balení výše. Co si o tom myslíte? udělali byste to lépe?
-
Problém není v pomalosti taru, ale v ukládání zabaleného souboru na disk. V daném případě asi na stejné fyzické médium. Místo toho by bylo vhodnější výstup taru ukládat přímo na disk zálohovacího serveru.
FTP funguje dobře při přenášení velkých souborů, ale pro malé soubory má vysokou režii. Pokud na uvedeném úložišti jsou převážně multimédia (což předpokládám), tak není problém přenášet celé adresáře a bez komprese. Podle mých zkušeností však bude tar v kombinaci s gzipem a rourou přímo na cílový server vždy nejrychlejší. Ovšem na to je FTP krátký.
A nebylo by lepší přenášet jen změněné soubory? Obvykle to zabere jen pár sekund až minut, protože 95 % uživatelských dat se za týden nezmění.
-
Podle mých zkušeností však bude tar v kombinaci s gzipem a rourou přímo na cílový server vždy nejrychlejší. Ovšem na to je FTP krátký.
http://www.krazyworks.com/using-ftp-with-pipes/
-
adam: Tak to nemá chybu. Funguje! Díky za vyvedení z omylu.
-
Taj něco mydlíte, ani nevíte co..
-
A nebylo by lepší přenášet jen změněné soubory? Obvykle to zabere jen pár sekund až minut, protože 95 % uživatelských dat se za týden nezmění.
To určitě ano,
jak to ale jednoduše udělat? Potřebuji synchronizovat adresář /home/backups s FTP
F.
-
lftp to umí. Stačí se mrknout na "man lftp", funguje to skvěle.
-
lftp to umí. Stačí se mrknout na "man lftp", funguje to skvěle.
Děkuji moc, já jsem na ten manuál díval ale nepochopil jsem tam jak udělat aby se tam nahrála ta složka a pouze se přepsaly změněné soubory. Nebo aby to byla jakoby synchronizece..?
Tady jsem našel návod ale nerozumím tomu. Prosím mohl by to někdo přeložit do češtiny nebo zjednodušit na náš případ?
#/bin/bash
lftp -u user,password publish.163.com <<EOF
set ftp:ssl-allow no
#a slash “/” in local dir is used to keep the dir structure
mirror print/ ~/tmp_install/print/
mirror -R ~/tmp_install/print/ print/
quit 0
EOF
#!/bin/bash
lftp -d ftp.server.cz -u usernamekftpserveru,heslokftpserveru -e "put /home/backups; quit" &&
děkuji za pomoc
-
To by šlo. Teď z toho prvního kódu vyházej řádky, které nepotřebuješ. Zajisté chceš mirrorovat jen směrem server -> záloha a nikoli opačně.
-
To by šlo. Teď z toho prvního kódu vyházej řádky, které nepotřebuješ. Zajisté chceš mirrorovat jen směrem server -> záloha a nikoli opačně.
Takže smažu tuto řádku?
mirror -R ~/tmp_install/print/ print/
A co vlastně to vše znamená? bude to fungovat? šlo by to nějak popsat?
-
Prosím pomozte vytvořit fungující skript pro synchronizaci