Не мог выполнить команду в кроне

Я пытался настроить rsync для резервного копирования каталога каждый день с именем текущего дня.

rsync --verbose --stats --compress --recursive /home/alpha/ /var/backups/alpha/`date +"%a"`

Выше команды хорошо работает и синхронизирует данные в Mon каталог. Но когда я копирую ту же команду в кроне, это не работает

13 16 * * * rsync --verbose --stats --compress --recursive /home/alpha/ /var/backups/alpha/`date +"%a"`

Но когда я удаляю 'дату + "%a"', часть от крона она работает.
Почему крон не выполняет 'дату + "%a"'?

1
задан 26 September 2016 в 14:02

2 ответа

Знак % должен быть экранирован с помощью \ , так как это альтернативный способ завершения команды в crontab .

«Шестое» поле (остальная часть строки) определяет команду, которую нужно запустить. Вся командная часть строки, вплоть до новой строки или символа%, будет выполняться / bin / sh или оболочкой, указанной в переменной SHELL файла cron. Знаки процента (%) в команде, если они не экранированы с помощью обратной косой черты (), будут заменены на символы новой строки, и все данные после первого% будут отправлены команде как стандартный ввод.

Итак, ваш crontab Строка должна выглядеть так:

13 16 * * * rsync --verbose --stats --compress --recursive /home/alpha/ /var/backups/alpha/`date +"\%a"`

Источники:

4
ответ дан 3 December 2019 в 06:39

Вы также можете использовать:

13 16 * * * bash -c "rsync --verbose --stats --compress --recursive /home/alpha/ /var/backups/alpha/`date +'%a'`"
1
ответ дан 3 December 2019 в 06:39

Другие вопросы по тегам:

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