Вопрос в следующем:
Прописал в crontab скрипт следующего вида:
drush sitealias ard --destination=/root/backup/site.tar.gz -y
mv /root/backup/site.tar.gz /root/backup/site-`date +%d-%m-%Y`.tar.gz
Алиас в конфиге драша есть, команды работают, если их последовательно выполнять. Но вот по контабу это все не срабатывает почему-то
ЧЯДНТ ?
Комментарии
может прав не хватает.... помотри что в логах пишет
Выполняется от имени root скрипт, по crontab -e задача видна, если бы прав не хватало он бы при последовательном выполнении этих двух команд в консоли выводил ошибку
Проверил логи кронтаба, есть только записи о том, что скрипт вызывается...
Единственное решение, которое приходит на ум - это банально повесить на кронтаб скрипт с mysqldump и tar, но это не оченб удобно, так как сайтов несколько и каждый раз править алиасы для драша и отдельно для каждого сайта прописывать в кроне mysqldump и tar гораждо дольше, решение с drush было бы гораздо быстрее, как в плане создания бекапов, так и в плане переноса на другую vps/восстановления сайтов из архивов.
А не проще скрипт на баше написать?
#!/bin/sh
d=`date +%Y-%m-%d`
dd="/home/backup/sql/$d"
rsync -r -t -l /var/www/site.ru /home/backup/www/
mkdir $dd
tar -czf $dd/site.ru.tgz /home/backup/www/site.ru
mysqldump -u user --password=pass site_db >$dd/site.sql
gzip $dd/site.sql
синкается на всякий случай, вдруг кто-нить заливает что-то на сайт. ну и по идее кеш оттуда выкинуть надо, он тож лишний
По идее, еще 1 скрипт нужен, чтобы старые бэкапы стирать, и отдельно записывать weekly, month - ну это если по ТЗ нужно.
Если сайтов несколько, то добавляете цикл for, и site делаете переменной.
П.С. сам скрипт выполняется кроном
0 7 * * 1-5 /bin/sh /home/backup/bin/backup.sh
только права проверьте
Так раньше и было, бекапы делались через mysqldump и tar, но хочется все это завязать на drush, чтобы при необходимости быстро развернуть копию сайта на тестовой vps или перенести на другой сервер.
Ну тады можт что-то вроде "2>&1 1>/root/drush_error"
в крон добавить и какой-нить дебаг включить в драше и посмотреть что он пишет?
А посмотреть ошибки кронтабовские?
а вот не пишет он ошибок никаких![Sad](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/sad.gif)
Вот только запись о том, что скрипт вызывался в var/log/cron :
Sep 5 01:00:01 servname crond[21990]: (root) CMD (/root/scripts/backup)
а конфиги алиасов драш в чьей домашней папке?
ЗЫ:
http://drush.ws/examples/example.aliases.drushrc.php
Using --quiet
By default, drush will print a success message when the run of cron is completed. The --quiet flag will suppress these and other progress messages, again avoiding an unnecessary email message.
Конфиги в папке юзера root, конечно, алиасы отрабатывают![Smile](https://drupal.ru/sites/all/modules/contrib/smiley/packs/kolobok/smile.gif)
Про ключ --quitet не знал, сейчас проверю
Так, перенаправил вчера вывод в отдельный файл через crontab вот так:
10 00 * * * /root/scripts/backup >> /var/log/drushback 2>&1
В скрипте дописал ключ --quiet
В результате в лог упало:
mv: cannot stat `/root/backup/backup.tar.gz': No such file or directory
Как понял, просто не срабатывает алиас команды drush (вторая ошибка вызвана тем, что скрипт бекапа не отрабатывает, поэтому архив не создается).
Это весьма странно, так как drush по кронтабу выполняется от имени root, а залогиневшись под root-ом команды вида drush [команда] срабатывают. Получается, что крон игнорирует символическую ссылку "drush"...
http://serverfault.com/questions/114702/crontab-environment
В скрипте нужно указывать полный путь до Drush.
Ошибка:
drush @alias cc all
Правильно:
/path/to/drush @alias cc all
@danylevskyi, спасибо, действительно косяк в пути.
Всем, кто отписывался - большое спасибо, я разобрался наконец )