Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: scipt puštěný z cronu nekopíruje určené složky  (Přečteno 2114 krát)

mephcz

  • Návštěvník
  • Příspěvků: 30
scipt puštěný z cronu nekopíruje určené složky
« kdy: 27 Března 2013, 21:25:45 »
Zdravím všechny udělal jsem si simple script který kontroluje instalované aplikace a v případě že je nainstalová zálohuje jejich CFG. Případně app s více soubory např apache2 kopíruje celou složku.
Když spustím script ručně tak je vše ok ale když ho umístím do cronu tak se hlavně zálohy kde kopíruji složky (SQUID, APACHE...) neprovedou. V cronu jsem zkoušel dát před script /bin/bash bez uspechu.

Pro přehled přikládám zmíněný script
Díky moc za případnou pomoc... v shellu jsem začátečník samouk :-)

#!/bin/bash

#Definice adresaru pro zalohy
HOST=${HOSTNAME}
BACKUP_DIR="/home/daniel/CFG_BACKUP";
BACKUP_DAY="`date +%d_%m_%y`";
ARCHIVE="ARCHIVE";
MNT="/mnt/SFTP";


#Aplikace pro test
SQUID="squid";
SQUID3="squid3";
OPENVPN="openvpn";
SARG="sarg";
APACHE="apache2";
DHCP="dhcpd";

#Adresaře s instalacnimi soubory

DIR_SQUID="/etc/squid/squid.conf";
DIR_SQUID3="/etc/squid3/squid.conf";
DIR_OPENVPN="/etc/openvpn/";
DIR_SARG="/etc/sarg";
DIR_APACHE2="/etc/apache2";
DIR_DHCP="/etc/dhcp";


#Definice systémových souborů
FILE_RC="/etc/rc.local"
FILE_NETWORK="/etc/network/interfaces"
CONFIGY="/home/daniel/*.sh"


#Kontrola a vztvoreni adresarove struktury pro zalohy


if [ ! -d "$BACKUP_DIR/$BACKUP_DAY" ];
then
        echo "$BACKUP_DIR/$BACKUP_DAY neexistuje vytvářím"
        mkdir -p "$BACKUP_DIR/$BACKUP_DAY"
fi




#kontrola zda jsou app nainstalovane, v pripade ze ano.. backup CFG

if type $SQUID >/dev/null 2>&1 ;
then
         cp -p $DIR_SQUID $BACKUP_DIR/$BACKUP_DAY/
fi

if type $SQUID3 >/dev/null 2>&1 ;
then
         cp -p $DIR_SQUID3 $BACKUP_DIR/$BACKUP_DAY/
fi

if type $OPENVPN >/dev/null 2>&1 ;
then
         cp -p -R $DIR_OPENVPN $BACKUP_DIR/$BACKUP_DAY/
fi

if type $SARG >/dev/null 2>&1 ;
then
         cp -p -R $DIR_SARG $BACKUP_DIR/$BACKUP_DAY/
fi

if type $APACHE >/dev/null 2>&1 ;
then
         cp -p -R $DIR_APACHE2 $BACKUP_DIR/$BACKUP_DAY/
fi

if type $DHCP >/dev/null 2>&1 ;
then
         cp -R $DIR_DHCP $BACKUP_DIR/$BACKUP_DAY/
fi

#Zaloha systemovych souboru
cp -p $FILE_RC $BACKUP_DIR/$BACKUP_DAY/
cp -p $FILE_NETWORK $BACKUP_DIR/$BACKUP_DAY/
cp $CONFIGY $BACKUP_DIR/$BACKUP_DAY/


if [ ! -d "$BACKUP_DIR/$ARCHIVE" ];
then
        echo "$BACKUP_DIR/$ARCHIVE neexistuje vytvářím"
        mkdir -p "$BACKUP_DIR/$ARCHIVE"
fi



chown daniel:root -R $BACKUP_DIR/$BACKUP_DAY

#Smazani zaloch v archivu starsich nez 30 dni
find $BACKUP_DIR -iname "*.tgz" -mtime +30 -type f -exec rm -rf {} \;

#Presun predchozi zalohy do archivu
mv $BACKUP_DIR/*.tgz $BACKUP_DIR/$ARCHIVE

#Zabaleni a smazani docasne slozky
tar cpzf $BACKUP_DIR/"$HOST"_"$BACKUP_DAY".tgz $BACKUP_DIR/$BACKUP_DAY
#rm -r $BACKUP_DIR/$BACKUP_DAY

menganito

  • Závislák
  • ***
  • Příspěvků: 1728
Re:scipt puštěný z cronu nekopíruje určené složky
« Odpověď #1 kdy: 28 Března 2013, 10:26:27 »
Ako vyzera crontab entry? Skusil si si cely vystup presmerovat do dakeho logu a tam hladat chybove hlasky?
Kód: [Vybrat]
/home/daniel/skript.sh &> /home/daniel/backup.log

mephcz

  • Návštěvník
  • Příspěvků: 30
Re:scipt puštěný z cronu nekopíruje určené složky
« Odpověď #2 kdy: 28 Března 2013, 10:46:16 »
Ahoj,

Výstup do logu jsem zkusil jak v cronu tak při ručním spuštění. U obou případu nebyla v logu žádná chyba jen oznámení z echa ve skriptu. Pri spusteni z cronu mi v zaloze chybi složky apache2 squidu a dhcp zbytek tam byl. Pri rucnim spusteni skriptu je vse ok..
nechapu kde muze byt zakopany pes

menganito

  • Závislák
  • ***
  • Příspěvků: 1728
Re:scipt puštěný z cronu nekopíruje určené složky
« Odpověď #3 kdy: 28 Března 2013, 11:14:51 »
Kód: [Vybrat]
cp -p -R $DIR_APACHE2/* $BACKUP_DIR/$BACKUP_DAY/$DIR_APACHE2/* by neslo?

mephcz

  • Návštěvník
  • Příspěvků: 30
Re:scipt puštěný z cronu nekopíruje určené složky
« Odpověď #4 kdy: 28 Března 2013, 11:59:31 »
bohužel bez úspěchu výsledek je stejný, ale mám pocot že na exekuci toho příkazu na kopírování ani nedojde spíš se mi zdá že dotaz na instalaci apache vrati hodnotu že není instalován což jsem si právě potvrdil dosazenim echa na then a else stavy:

if type $APACHE >/dev/null 2>&1 ;
then
#        cp -p -R $DIR_APACHE2 $BACKUP_DIR/$BACKUP_DAY/
        cp -p -R $DIR_APACHE2/* $BACKUP_DIR/$BACKUP_DAY/$DIR_APACHE2/*
        echo "Provadim backup apache2"
else
        echo "Apache2 neni nainstalovan"
fi


výstup z logu je:
/home/daniel/CFG_BACKUP/28_03_13 neexistuje vytvářím
Apache2 neni nainstalovan
Backup vytvoren

Takže příčina je při spuštění z cronu z nějakého duvodu dotaz vrací že apache v systemu není. Nevíte případně o jiném zpusobu dotazu na instalované balíčky? Který by neměl problém z cronem?

jmp

  • Host
Re:scipt puštěný z cronu nekopíruje určené složky
« Odpověď #5 kdy: 28 Března 2013, 12:47:57 »
Citace
$ type apache2
bash: type: apache2: nenalezeno
$ type httpd
httpd je /usr/sbin/httpd

EDIT: nebude lepší kontrolovat, jestli existuje složka s konfigurací a tu případně zálohovat, než sledovat existeni binárky služby?
« Poslední změna: 28 Března 2013, 12:50:39 od jmp »

mephcz

  • Návštěvník
  • Příspěvků: 30
Re:scipt puštěný z cronu nekopíruje určené složky
« Odpověď #6 kdy: 28 Března 2013, 15:55:25 »
Máte pravdu, než se s tím trápi tak jsem to přenastavil na kontrolu složek. a vše se chová korektně.

Díky :-)

ntz_reloaded

  • Lokaj
  • Závislák
  • ***
  • Příspěvků: 3735
  • skill :: ur home erly
Re:scipt puštěný z cronu nekopíruje určené složky
« Odpověď #7 kdy: 28 Března 2013, 16:01:01 »
dve poznamky:

1) nepouzivej prosim v shellovych skriptech UPPERCASE pro sve promenne ;) .. uppercase by mel byt vyhrazen pro systemove promenne
2) na debug skriptu prosim pouzivej:

Kód: [Vybrat]
_logfile=/var/tmp/`basename $0`.log.`date +%M%H%d%m%y`;
set -x;
exec 2>$_logfile;
« Poslední změna: 28 Března 2013, 16:04:25 od ntz_reloaded »
tikejte mi, taky Vam tikam ...
song of the day - openSUSE, openindiana, DuckDuckGo
The noise ain't noise anymore, who's to blame, WHO'S TO BLAME ??

mephcz

  • Návštěvník
  • Příspěvků: 30
Re:scipt puštěný z cronu nekopíruje určené složky
« Odpověď #8 kdy: 28 Března 2013, 20:08:16 »
beru v potaz, díky  ::)

 

Provoz zaštiťuje spolek OpenAlt.