Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование в *nix (http://forum.oszone.net/forumdisplay.php?f=35)
-   -   Как правильно написать sh для коректной работы в cron? (http://forum.oszone.net/showthread.php?t=316539)

zai 07-07-2016 02:38 2648641

Как правильно написать sh для коректной работы в cron?
 
для бэкапа:

Код:

#!/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 2648673

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

zai 07-07-2016 10:30 2648695

Цитата:

Цитата mar
а тот же 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 2663903

Цитата:

Цитата mar
Под крон надо почти везде прописывать полные пути »

только тем, кто в кронтабе не указывал PATH
Цитата:

Цитата zai
Как лучше сделать? »

прописать PATH в кронтабе.
альтернативой является страдание типа:
Код:

mysqldump=`/usr/bin/which mysqldump`
tar=`/usr/bin/which tar`

и вызов потом в виде
Код:

${mysqldump} ${parameter}
${tar} parameter1 parameter2...



Время: 10:45.

Время: 10:45.
© OSzone.net 2001-