Программа GNU tar
сама может выполнить сжатие, обычно выполняемое gzip
. Вы можете использовать флаг -z
, чтобы включить это. Таким образом, tar
и gzip
могут быть объединены в:
tar -zcf ${db}-$(date +%m-%d-%y).sql.tar.gz ${db}-$(date +%m-%d-%y).sql
Получение tar
для чтения из стандартного ввода для архивирования не простая задача, но я бы поставил под сомнение ее необходимость в этом конкретном случае.
Цель tar
в том, чтобы иметь возможность упаковать множество файлов в один архивный файл, но, поскольку вы обрабатываете только один файл (поток вывода из mysqldump
), вы не нужно до tar
, вы можете просто направить его прямо в gzip
:
mysqldump blah blah | gzip > ${db}-$(date +%m-%d-%y).sql.gz
Это потому, что gzip
будет сжимать стандартный ввод в стандартный вывод, если вы не дадите ему никаких имен файлов.
Это устраняет необходимость в любых (возможно, очень больших) временных файлах во время процесса сжатия.