Crontab для резервного копирования каталога

Итак, у меня это в моем crontab -e

0 0 * * * /opt/www/backup.sh

И в файле у меня есть следующее:

 #!/bin/bash FILENAME=$(date +%Y%m%d).tar.gz tar zcf backups/$FILENAME f 

Файл находится в /opt/www

Но резервная копия вообще не создается. Если я запустил backup.sh вручную, тогда он запустится и создаст резервную копию каталога f как он должен это сделать.

Я запускаю Debian 7.8.

  • Cronjob запускает скрипт каждые 3 недели в среду
  • Команда crontab rtcwake не работает
  • Правильный формат cron
  • Можно ли планировать выполнение задания cron каждые две недели?
  • Выполнять параллельные параллельные параллели
  • Конфликт между cron.deny и разрешить, кто победит?
  • Как написать это расписание в crontab?
  • Задача Cron начинается в 5:30 и выполняется каждые 5 минут один раз
  • 2 Solutions collect form web for “Crontab для резервного копирования каталога”

    Текущий (рабочий) каталог, вероятно, не установлен в / opt / www при запуске cronjob. Вы можете установить его в своем скрипте backup.sh перед тир tar... по:

     cd /opt/www 

    или вы можете использовать полный путь в линии tar:

     tar zcf backups/$FILENAME /opt/www/f 

    Я также могу посоветовать использовать полный путь для backups/$FILENAME

    Когда corntab запускает код, он запускает его из относительного пути, начиная с вашего домашнего каталога.

    Простое исправление: вы можете использовать абсолютный путь к каталогу (начиная с / ) в вашем скрипте.

    Другой метод: используйте «path_dir» в вашем коде для переносимости.

     path=$(readlink -f $0) path_dir=${path%/*} 
    Linux и Unix - лучшая ОС в мире.