Задать вопрос
donkarabon
@donkarabon

Команда выполняется в терминале, но не выполняется в crontab. (Supload для бэкапов в Selectel), решение?

Здравствуйте. Нуб в сис.администрировании. Необходимо настроить ежесуточные бэкапы определенной папки /var/www/sites на удаленный сервер (Selectel), использую одно из средств, предлагаемое компанией https://blog.selectel.ru/rezervnoe-kopirovanie-v-o... .

По SSH от root редактирую crontab:

crontab -e

* 7 * * * mysqldump --all-databases -uroot -pPASSWORD > /var/www/sites/dbd/alldb.sql && nowdate=`date +"\%d_\%m_\%y"` && tar -czvf backups/bckp-$nowdate.tar.gz /var/www/sites && supload -u 12345 -k PASSWORD -d 14d -r projectbackups/ddos-guard-projects/ backups && rm backups/*.tar.gz -f

(названия и пароли, понятное дело, условно поменял)

Каждые 7 утра создается дамп всех БД сервера, папка с сайтами сервера архивируется и готовый архив кидается в папку backups (в root-директории), а затем из этой папки все содержимое (там только данный архив), отправляется в удаленную директорию (supload) и затем удаляется.

Последовательно все эти команды вводил, все работало как по маслу.

Но когда сам крон начинает все это выполнять, все выполняется вплоть до создания архива. Но последние 2 команды (supload - отправить на удаленный сервер, а затем rm - удалить), не выполняются.

Смотрел mail рутовский, /var/log/cron - ошибок не нашел (на сервере CentOS 6).

В логах /var/log/cron лишь:

mince6564 CROND[26133]: (root) CMD (mysqldump --all-databases -uroot -pPASSWORD > /var/www/sites/dbd/alldb.sql && nowdate=`date +"\%d_\%m_\%y"` && tar -czvf backups/bckp-$nowdate.tar.gz /var/www/sites && supload -u 12345 -k PASSWORD -d 14d -r projectbackups/ddos-guard-projects/ backups && rm backups/*.tar.gz -f)

т.е. в скобках CMD () содержимое соответствует тому набору команд, который я написал. Будто все выполнилось окнорм.

Заранее благодарю за помощь!!
  • Вопрос задан
  • 1062 просмотра
Подписаться 1 Оценить 2 комментария
Решения вопроса 2
donkarabon
@donkarabon Автор вопроса
Перенаправил вывод об ошибках в /var/log/cron (ОКАЗЫВАЕТСЯ ЭТО НАДО ДЕЛАТЬ:D), в итоге все выполняется (архивируется) как и прежде, подробно в лог пишется процесс, и затем все заканчивается этим: /bin/sh: supload: command not found , то бишь действительно что-то с окружением. Команду не понимает... (соответственно последнюю команду rm он не выполняет, т.к. предыдущая команда не выполнилась).

Проблема оказалась, безусловно, в незнании основ работы с сервером (только познаю все это дело, т.к. раньше работал максимум с ISP Manager и там проблем особо не возникало с тем же резервным копированием).

В общем, оказалась проблема в окружении. Спасибо Сергею. supload не работал, т.к. находился в /usr/local/bin , а все команды основные находятся в /usr/bin . Перенес supload в /usr/bin и все заработало. Архив отсылается на удаленный сервер, затем удаляется с локального.

Буду осваивать работу с linux, читать книжки и мануалы, спасибо:3
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
крон выполняет команду не из того окружения что и ты, поэтому просто не находит команду mysqldump
укажи к ней полный путь, оли напиши скрипт со всеми нужными вещами (запись в лог файл, перенаправление вывода), и вызывай скрипт, опять таки указав к нему полный путь.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
пропишите полные пусти ко всем директориям
или сделайте cd (добавьте в команду) в целевую директорию, откуда действуют относительные пути
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы