По какой-то причине gzip не работает. Это дает мне пустой файл
/usr/bin/mysqldump --opt -u root -ppassword database > database.sql | gzip > database.sql.gz
database.sql правильно создан и имеет правильный размер.
Однако database.sql.gz занимает всего 20 КБ и содержит пустой файл.
, благодаря
Проблема в том, что вы пытаетесь перенаправить вывод как в файл, так и в канал.
Если вы хотите сжать вывод команды в файл, вы должны использовать:
/usr/bin/mysqldump --opt -u root -ppassword database | gzip > database.sql.gz
Конвейер означает, что вы НЕ пишете в файл, поэтому просто удалите «> database.sql» из своей строки.
Вместо этого попробуйте что-то вроде этого:
/ usr / bin / mysqldump --opt -u root -ppassword database | gzip> database.sql.gz
Попробуйте это
/usr/bin/mysqldump --opt -u root -ppassword database | gzip > database.sql.gz
Потому что после создания файла sql database.sql больше нет выходных данных. Он не продолжается, поэтому канал не получает никаких данных. Вы могли бы сделать это: mysqldump -u root -p auth > data.sql && gzip data.sql
Ваш синтаксис здесь неправильный. Поскольку вы отправляете выходные данные команды mysqldump в database.sql, выходных данных, которые можно передать в gzip, больше нет. Просто удалите этот бит, чтобы создать только файл gzip: /usr/bin/mysqldump --opt -u root -ppassword database | gzip > database.sql.gz
Если вы действительно хотите создавать сжатые и несжатые версии, вам нужно будет либо запустить две отдельные команды: /usr/bin/mysqldump --opt -u root -ppassword database > database.sql ; cat database.sql | gzip > database.sql.gz
[ 114]
или используйте тройник для разделения выхода: /usr/bin/mysqldump --opt -u root -ppassword database | tee database.sql | gzip > database.sql.gz