Войти

Показать полную графическую версию : Как правильно написать sh для коректной работы в cron?


zai
07-07-2016, 02:38
для бэкапа:

#!/bin/sh

find /home/backup/* -mtime +30 -exec rm -r {} \;
mkdir -p /home/backup/"$(date '+%F_%T')"
cd /var/www/html/
tar cjf /home/backup/"$(date '+%F_%T')"/vtigercrm.tar.bz2 vtigercrm
mysqldump -uroot -p123QWEasd vtigerdb > /home/backup/"$(date '+%F_%T')"/vtigerdb.sql

Это корректно будет обрабатываться в cron?

для восстановления:

#!/bin/sh

service apache2 stop
rm -r /var/www/html/vtigercrm
tar -jxf *.tar.bz2 -C /var/www/html/
mysql -uroot -p123QWEasd vtigerdb < ./vtigerdb.sql
service apache2 start

mar
07-07-2016, 08:46
некорректно. Под крон надо почти везде прописывать полные пути. Т.е. cd отработает итак, а тот же mysqldump - нет
Но вообще-то самое простое протестировать самому на *nix-машине =) Уж первая-то часть точно безопасна даже на сервере )

zai
07-07-2016, 10:30
а тот же mysqldump - нет »
В каком месте? Второй скрипт не под cron, смылс в следующем в папке /home/будет папка restore, а в ней лежать второй скрипт, т.е. нужная папка будет скопированна из /home/backup/ в /home/restore

Такой вариант правильный или нет? Как лучше сделать?

#!/bin/sh

BACKUPDIR=/home/backup
DAYS=30
BACKUPDATE=`date +%H-%M-%S`
FOLDERDATE=`date +%d.%m.%y`

service apache2 stop
mkdir -p /${BACKUPDIR}/${FOLDERDATE}
cd /var/www/html
tar cjf ${BACKUPDIR}/${FOLDERDATE}/${BACKUPDATE}.crm.tar.bz2 vtigercrm >/dev/null 2>&1
mysqldump -uroot -p123QWEasd vtigerdb > ${BACKUPDIR}/${FOLDERDATE}/${BACKUPDATE}.db.sql
service apache2 start
find $BACKUPDIR/* -mtime +$DAYS -exec rm -r {} \; >/dev/null 2>&1


#!/bin/sh

mv *crm.tar.bz2 vtigercrm.tar.bz2
mv *db.sql vtigerdb.sql
service apache2 stop
rm -r /var/www/html/vtigercrm
tar -jxf vtigercrm.tar.bz2 -C /var/www/html/
mysql -uroot -p123QWEasd vtigerdb < vtigerdb.sql
service apache2 start

MakaBooka
29-08-2016, 14:10
Под крон надо почти везде прописывать полные пути »
только тем, кто в кронтабе не указывал PATH
Как лучше сделать? »
прописать PATH в кронтабе.
альтернативой является страдание типа:
mysqldump=`/usr/bin/which mysqldump`
tar=`/usr/bin/which tar`
и вызов потом в виде
${mysqldump} ${parameter}
${tar} parameter1 parameter2...




© OSzone.net 2001-2012