在管道中使用时更改gunzip临时目录

cb0*_*cb0 2 linux temporary-files gunzip

背景

我正在使用这些硬盘分区的mysql服务器上工作:

...
/dev/vdd       99G     58G   39G   61% /var/lib/mysql
tmpfs         2,4G       0  2,4G    0% /tmp
...
Run Code Online (Sandbox Code Playgroud)

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

gunzip -c sql_dump.sql.gz | mysql -uDB_USER -p DB_NAME
Run Code Online (Sandbox Code Playgroud)

总的来说,这sql_dump.sql.gz是可行的,但是提取后我的文件将超过5GB。

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

现在,我确实将文件移动到了/var/lib/mysql具有足够可用空间的分区中。在此处将我的文件解压缩,开始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
Run Code Online (Sandbox Code Playgroud)

这甚至可能吗?我进行了很多搜索,但找不到能解决此特定需求的任何东西。

Krz*_*soń 5

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