Я пишу скрипт для создания резервных копий базы данных MySQL, работающей в док-контейнере.База данных правильно запущена и работает.
Мой текущий код
#!/bin/bash
PATH=/usr/bin:/usr/local/bin:/root/.local/bin:$PATH
docker-compose exec -T db mkdir -p /opt/booking-backup
docker_backup_path="/opt/booking-backup/dump_prod_$(date +%F_%R).sql"
copy_backup_path="/root/backup_scripts/booking_prod/dump_prod_$(date +%F_%R).sql"
docker-compose exec db mysqldump --add-drop-database --add-drop-table --user=root --password="pw" booking > "$docker_backup_path"
docker-compose exec db mysqldump --add-drop-database --add-drop-table --user=root --password="pw" booking > "/opt/booking-backup/dump_prod.sql"
[ -d ./backup ] || mkdir ./backup
docker cp $(docker-compose ps -q db):$docker_backup_path $copy_backup_path
Однако, когда я выполняю его, она выдает эту ошибку:
Error: No such container:path: f0baa241becd20d2690bb901fb257a4bbec8cac17e6f1ce6d50adb9532bbae03:/opt/booking-backup/dump_prod_2019-05-28_14:23.sql
Что делает этоболее странно, что у меня точно такой же код (но с booking
выключен для abc
и с PSQL вместо MySQL), который работает правильно.
Похоже, что эта строка
docker-compose exec db mysqldump --add-drop-database --add-drop-table --user=root --password="pw" booking > $docker_backup_path
не не создает выходной файл, но когда я использую tee
, я вижу содержимое дампа, и оно корректно.
Что здесь не так?