создать резервную копию из каталога

Я хотел бы создать резервную копию из каталога, используя cron. Я написал следующую команду:

cd path && sudo zip -r "backup-$(date +"%Y-%m-%d").zip" git/ && sudo mv "backup-$(date +"%Y-%m-%d").zip" /backup/

, когда я звоню из командной строки, тогда все в порядке. Но когда я помещаю это в cron тогда, это не работает. Журнал содержит только часть этой команды и ничего более. Что мне делать?

Содержание Crontab:

* * * * * cd path && zip -r "backup-$(date +"%Y-%m-%d").zip" git/ && mv "backup-$(date +"%Y-%m-%d").zip" /backup /

2
задан 25 February 2013 в 18:30

2 ответа

Это происходит потому, что (crontab manpage ):

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

Поскольку вы используете % в своей команде резервного копирования, «вы должны поместить это в файл .sh, chmod +x file, а затем вызвать этот файл из cron», как предложено в LnxSlck .

0
ответ дан 25 February 2013 в 18:30

По запросу я перехожу к ответу:

Поместите команды, которые вы хотите выполнить, в файл .sh , например:

1. vi test.sh

cd path && sudo zip -r "backup-$(date +"%Y-%m-%d").zip" git/ && sudo mv "backup-$(date +"%Y-%m-%d").zip" /backup/

Сохранить и выход.

Запуск на консоли

2. chmod +x test.sh

Вызов файла fron cron с желаемой периодичностью:

3. crontab -e

#Run every hour
0 * * * * /path/to/file/test.sh

Убедитесь, что пользователь, использующий cron для выполнения файла, имеет разрешения запустить файл.

0
ответ дан 25 February 2013 в 18:30

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

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