Fórum Ubuntu CZ/SK
Ostatní => Ubuntu Server => Téma založeno: campesino 04 Prosince 2010, 07:15:31
-
Dobrý den, pokoušel jsem se zavést automatické zálohy webu ze serveru Ubuntu 10.04 pomocí cron, který spouští skript. Pokud skript spustím ručně, jako root, záloha z adresáře /var/www se provede kompletně. Pokud stejný skript spustí cron, některé adresáře i soubory v záloze chybí.
crontab -e
# m h dom mon dow command
44 5 * * * /root/skripty/zaloha_www.sh
skript zaloha_www.sh:
#!/bin/sh
#databaze OK
mysqldump baroko -u baroko --password="xxxxxxxxxxxxxx" > /home/zaloha/zaloha_www/baroko.sql
#zkopirovani app baroko tako OK
cp -r /var/www/baroko /home/zaloha/zaloha_www
#pokud script provadi cron, jsou v archivu jen nektere
#adresare a soubory
tar -cvzf /home/zaloha/zaloha_www.tar.gz /home/zaloha/zaloha_www
chmod -R 666 /home/zaloha/zaloha_www
Děkuji za případné rady
-
A ktore chybaju?
diff /var/www/baroko /home/zaloha/zaloha_www
. Tie co chybaju maju nejake specialne prava/vlastnika? Skus si vystup cp presmerovat do suboru, ci tam nemas nejake chybove hlasky. Popr. skus cp s prepinacom -a. Nemas v zdroj. adresari aj sw/hw linky? ...
-
mozna se mylim, ale mam dojem, ze v cronu nejsou definovane cesty (promenna PATH) - budto definujte cesty, nebo ve scriptu pouzivejte plne cesty k programum...
-
do crontabu přidáváš pod rootem?
-
do crontabu přidáváš pod rootem?
To som chcel odhalit tym, ze co sa mu neskopiruje :)
crontab -e
nastavuje crontab pre aktualneho uzivatela.
sudo crontab -e
zasa pre roota
a pre system v /etc/crontab.
-
sudo crontab -e
# m h dom mon dow command
* * * * * whoami >> /tmp/whoami.txt
pak mrkni co je v tom texťáku, bude tam user, pod kterým se to spustilo...
-
Děkuji všem za odpovědi, v adresáři /var/www/baroko je Joomla, v archivu chybí adresáře administrator, components a některé soubory, pokaždé je to ale trochu jinak - někdy chybí ještě další adresáře a soubory; řádky do crontab zadávám jako root (je to pronajatý virtuální server ubuntu 10.04, ale měli tam uživatele root, tak jsem to tak nechal (sudo nepoužívám); skript adresář /var/www/baroko nejprve zkopíruje do adresáře /home/zaloha/zaloha_www a ta kopie je vždy kompletní, ale selhává vytvoření archivu (zkoušel jsem i gzip -to dopadalo stejně).
Pokud ten zalohovaci skript spustím jako root přímo z konzole, tak je vše OK. Děkuji všem za typy.
-
Ještě jsem zapomněl: /tmp/whoami.txt : root
-
http://forum.ubuntu.cz/index.php?topic=44401.0
-
heh ;D
k++;
-
Zajímavé... to je dobré vědět... já si dělal zálohovač v C++, tak tam jestli mám v parametr, tak to ani nepoznám... výstup si řídím sám v programu. Zajímavé čtení každopádně ;)
-
nejde prece o v parametr... jde o to, ze cron nezvlada urcitou delku vystupu z prikazu, cili je potreba ten vystup prip. nekam presmerovat... a taky v 10.10 uz by to melo byt opravene...
-
díky moc všem, bez parametru v to funguje OK
-
PS: jen se zeptám... s tím parametrem v... neházelo to náhodou chyby do syslogu? taktéž pokud funguje lokální doručování emailů nemá root nějaké emaily (čtou se příkazem mail)?
-
Dobrý den, pokoušel jsem se zavést automatické zálohy webu ze serveru Ubuntu 10.04 pomocí cron, který spouští skript. Pokud skript spustím ručně, jako root, záloha z adresáře /var/www se provede kompletně. Pokud stejný skript spustí cron, některé adresáře i soubory v záloze chybí.
crontab -e
# m h dom mon dow command
44 5 * * * /root/skripty/zaloha_www.sh
skript zaloha_www.sh:
#!/bin/sh
#databaze OK
mysqldump baroko -u baroko --password="xxxxxxxxxxxxxx" > /home/zaloha/zaloha_www/baroko.sql
#zkopirovani app baroko tako OK
cp -r /var/www/baroko /home/zaloha/zaloha_www
#pokud script provadi cron, jsou v archivu jen nektere
#adresare a soubory
tar -cvzf /home/zaloha/zaloha_www.tar.gz /home/zaloha/zaloha_www
chmod -R 666 /home/zaloha/zaloha_www
Děkuji za případné rady
Ahoj co se toh cronu týče
44 5 * * * /root/skripty/zaloha_www.sh
tak zde máš chybku
44 5 * * * root /root/skripty/zaloha_www.sh
dále by neměl cron končit prázdným řádkem takže pro sichr
44 5 * * * root /root/skripty/zaloha_www.sh
;
Ted spoustis script jako root a mel by ti skopirovat vse...
-
ja bych ti jeste poradil, aby sis to root heslo dal nekam do promenny a souboru (samozrejme s prislusnejma pravama pro necteni mimo root napr.) a do tehle skriptu ho jen inkludnul (mimo jine docela prakticky, kdyz zmenis heslo - menis ho na jednom miste)
neco ala treba
kosmik2:~# cat /root/.scripts/add-user-db-mysql.sh
#!/usr/bin/env bash
#
# creates a mysql user w/ random pass &
# grants priviledges to new database w/ it's name
#
# @author starenka
# @since 04-01-2008
# @version 0.1
#
source /root/includes/mysql
if [ -z "$1" ]; then
echo "O HAI! You haven't passed any argument user/db_name. Use the force, Luke!"
else
echo 'generating pass....'
UPASS=`python -c 'from random import choice;import string;print "".join([choice(string.letters+string.digits)
for i in range(20)])'`
echo 'creating user and granting privileges....'
echo "GRANT ALL ON $1.* to $1@localhost IDENTIFIED BY '$UPASS';" | mysql -uroot -p$ROOT_PASS
echo 'creating db....'
echo "CREATE DATABASE $1 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci" | mysql -u$1 -p$UPASS
echo
echo "here's your cookie: mysql://$1:$UPASS@$1"
echo
echo "keep it safe, son!"
fi