Назад | Перейти на главную страницу

Создание простого сценария резервного копирования MySQL для запуска через cron с проблемами с разрешениями

Это очень простой сценарий mysqldump, который делает дамп и сохраняет его локально.

Запуск mysqldump сам по себе работает нормально, как и gzip (т.е. они там, где должны быть на моем пути)

/usr/bin/mysqldump --database $DBNAME --opt --single-transaction -u $USER -p $PASS

Но когда я пытаюсь передать вывод в gzip, а затем записать его в файл, я получаю ошибку:

/var/www/vhosts/meh/mysqlbackup/mysqlbackup.sh: line 18: /var/www/vhosts/meh/mysqlbackup/mehbackup.sql.gz: No such file or directory
mysqldump: Got errno 32 on write

Вот строка 18, на которую ссылается ошибка:

/usr/bin/mysqldump --database $DBNAME --opt --single-transaction -u$USER -p$PASS | /usr/bin/gzip -9 > $OUTDIR$OUTFILE

Эта ошибка номер 32 кажется ошибкой сломанного канала, поэтому ... Я предполагаю, что, поскольку mysqldump может работать нормально, у меня проблема с записью результатов? Может быть, проблема с разрешениями?

Разрешения на каталог, в который я пишу, - 766 (rwxrw-rw-)

Я запускаю это с правами суперпользователя (su)

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

Для меня я не запускал cron как пользователь root, поэтому мне пришлось изменить владельца папки и разрешение

chown user1 /home/user1/public_html/backups
chmod 755 /home/user1/public_html/backups

Затем я получал ту же ошибку: Нет такого файла или каталога mysqldump: Получил ошибку 32 при записи

Я добавляю точку перед public_html (корневая папка для пользователя user1) и работаю нормально.

mysqldump -u user1_usr -h localhost -p'123123' db_db1 | gzip -f > ./public_html/backups/db-2015-11-14-0722.sql.gz

Другая возможность: у вас есть «/ var / www / vhosts / meh / mysqlbackup» в одном экземпляре и «/ var / www / vhosts / meh / mysqlbackups» в другом. Может это все.

Проверить путь:

file /var/www/vhosts/meh/mysqlbackup/
ls -ald /var/www/vhosts/meh/mysqlbackup/

и создайте каталог:

mkdir -p /var/www/vhosts/meh/mysqlbackup/

Посмотрим, сможешь ли ты это сделать:

$ echo "woo" | gzip > asdf.gz
$ gunzip asdf.gz
cat asdf

Это должно сказать вам, что ваш файл gzip работает нормально. Если вы не делаете свои gzip-файлы так, как только что сделал я, может быть, попробуйте так же, как я.

Другими словами, попробуйте следующее:

/usr/bin/mysqldump --database $DBNAME --opt --single-transaction -u $USER -p $PASS | gzip > /var/www/vhosts/meh/mysqlbackup/dump.gz