Я хочу сделать задание 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. Намного, намного безопаснее и проще отлаживать, помещать свои команды в сценарий, а затем вызывать этот сценарий (по его полному пути).