Я пытаюсь создать cronjob, который создает резервные копии базы данных каждую ночь.
В моем кронтабе есть задание:
* * * * * * /home/user/scripts/backup.sh
(для тестирования настроил его на каждую минуту)
В файле backup.sh у меня есть:
docker exec -it dbContainer pg_dump -U username -d dbName > /home/user/backups/testingBackup.sql
Файл всегда пустой:
-rw-rw-r-- 1 user user 0 Jul 14 08:39 testingBackup.sql
Однако, если я запускаю файл самостоятельно и ввожу команду /home/user/scripts/backup.sh
,
он не пуст:
-rw-rw-r-- 1 user user 30813 Jul 14 08:45 testingBackup.sql
Мне кажется, что это имеет смысл, если что-то не так с разрешениями, но все делается от "пользователя". Я не делал ничего от root, например, sudo crontab... sudo /home/user/backups/testingBackup.sql и т.д.
Я не понимаю, почему в одном случае результирующий файл пуст, а в другом - нет.
Спасибо за любую помощь
для команды в файле sh:
docker exec -it dbContainer pg_dump -U имя пользователя -d имя_базы_данных > /home/user/backups/testingBackup.sql
Он работает в интерактивном режиме (-it). Если я удалю это, все будет работать (поэтому команда:
docker exec dbContainer pg_dump -U username -d dbName > /home/user/backups/testingBackup.sql