在管道

时间:2016-06-14 12:58:19

标签: linux temporary-files gunzip

背景

我正在使用那些hdd分区的mysql服务器:

...
/dev/vdd       99G     58G   39G   61% /var/lib/mysql
tmpfs         2,4G       0  2,4G    0% /tmp
...

我需要将mysql转储导入我的数据库。因此,我使用以下语法:

gunzip -c sql_dump.sql.gz | mysql -uDB_USER -p DB_NAME

一般情况下,这可行,但我的sql_dump.sql.gz文件在提取时将超过5GB。

上述命令将失败gzip: /home/.../sql_dump.sql.gz: No space left on device。我认为这与具有足够空间的mysql分区无关,但/tmp分区只有2.4GB可用空间。

现在我确实将文件移动到了/var/lib/mysql分区,该分区有足够的可用空间。 gunzip我的文件,启动mysql导入,然后删除压缩和未压缩的文件。

问题

我问自己是否有办法迫使gunzip临时更改默认的临时目标位置,默认情况下为/tmp/。因此gunzip -c sql_dump.sql.gz | ...在提取文件时不会将提取的文件存储在/tmp/下,而是存储在/var/lib/mysql下。像这样:

export "GZIP_TMP_DIR=/var/lib/mysql/"
gunzip -c sql_dump.sql.gz | mysql -uDB_USER -p DB_NAME

这甚至可能吗?我搜索了很多但找不到能解决这个特殊需求的东西。

1 个答案:

答案 0 :(得分:5)

在环境变量TMPDIR中设置所需的临时目录(请参阅https://en.wikipedia.org/wiki/TMPDIR)。