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

/usr/bin/mysqldump --all-databases | /bin/gzip > Backup_DB/alldatabases_test.sql.gz

Когда я запускаю скрипт из корня, файл выгружается в указанную папку:

root@server1 [~]# sh mybackup.sh
root@server1 [~/Backup_DB]# ls -a
./  ../  alldatabases_test.sql.gz

Однако, когда я настроил это как cronjob, он ничего не выбрасывает:

*/2 *   *   *   *   sh mybackup.sh

Другие cronjobs работают нормально.

РЕДАКТИРОВАТЬ

Так что запуск сценария не работает, но я ценю вашу помощь. Моя конечная цель - запустить скрипт из того места, где находятся все остальные мои cronjobs, и создать резервную копию в папке, к которой у меня есть доступ по ftp. Вот почему я добавил cronjob:

*/2 *   *   *   *   sh /home/mysite/www/cronjobs/mybackup.sh

с содержанием:

/usr/bin/mysqldump --all-databases | /bin/gzip > /home/mysite/www/cronjobs/alldatabases.sql.gz

Это тоже не работает. Я не смог найти alldatabases.sql.gz в папке /cronjobs. Неправильно ли заданы пути?

1 ответ1

1

Во-первых, вам нужен полный путь к сценарию, как сказал @attomos. Самый простой способ получить это - запустить cd relative/path/to/script/directory и затем pwd или echo "$PWD" чтобы получить текущий каталог.

Во-вторых, путь Backup_DB/alldatabases_test.sql.gz внутри скрипта теперь относится к корневому каталогу системы, поэтому скрипт пытается сохранить его в /Backup_DB/alldatabases_test.sql.gz , который, вероятно, не был предназначен. Вы также должны сделать этот путь абсолютным: /root/Backup_DB/alldatabases_test.sql.gz .

Вы должны увидеть некоторые сообщения об ошибках из этого в /var/log/cron .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .