Это очень простой сценарий 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