Назад | Перейти на главную страницу

как настроить задание cron и использовать правильный синтаксис в моих заданиях

Я хочу сделать задание cron, которое создает tar моего веб-каталога.

У меня есть эта работа

* * * * * tar -zcvfp /disk1/archives/websites/`date +%Y-%m-%d_%I-%M-%S-%p`/`date +%Y-%m-%d_%I:%M:%S:%p`.tar.gz /web

это задание ДОЛЖНО (но не) создавать tar-файл в моем каталоге / disk1 ... так что я в тупике на этом.

еще одна вещь, о которой я думал, это то, можно ли сделать так, чтобы все резервные файлы tar были сброшены в date +%Y-%m-%d и все ли файлы, которые были созданы в тот же день, размещены там?

Таким образом, результат будет выглядеть как

/disk1/archives/websites/2012-02-05/2012-02-05_5:25:04.tar.gz

Я сделал это задание каждую минуту в тестовых целях.

Что-то не так с моим синтаксисом?

cron не знает что tar или date потому что у него нет переменных среды. Обратитесь к двоичным файлам, используя их полный путь.

Если вы не знаете полный путь, используйте which чтобы получить это.

Пример:

[bart@dev ~]$ which tar
/bin/tar
[bart@dev ~]$ which date
/bin/date

Это сделает вашу cron-строку такой:

/bin/tar -zcvfp /disk1/archives/websites/`/bin/date +%Y-%m-%d_%I-%M-%S`/`/bin/date +%Y-%m-%d_%I:%M:%S`.tar.gz /web

Поместите свой tar в сценарий оболочки, скажем, /usr/local/bin/backup.sh. Затем вызовите этот сценарий из cron.

* * * * * /usr/local/bin/backup.sh

Хитрость в том, что cron не является оболочкой, поэтому вещи, которые работают в расширении оболочки, могут не работать в crontabs. Намного, намного безопаснее и проще отлаживать, помещать свои команды в сценарий, а затем вызывать этот сценарий (по его полному пути).