改进 mktemp

改进 mktemp

我想知道如何最好地改进mktemp加密容器或文件系统的使用。

我正在处理的问题是,如果可能的话,我希望我的 shell 脚本将临时文件存储在包含工作目录的文件系统内。

的正常行为mktemp似乎是使用环境变量或 中指定的根路径/tmp。但是,如果我正在处理加密容器内的文件,这通常会将临时数据泄漏到未加密的位置。

tmp这个想法是首先检查当前文件系统的安装点中是否存在目录,并且/tmp仅将其用作最后的手段。我怎样才能可靠(且有效)地实现这一点。

编辑

识别给定路径的挂载目录的可能方法如下

dir=`realpath [path]`; 
res=1; 
while [ $res -ne 0 ]; do 
  dir="${dir%/*}"; 
  mountpoint -q "$dir/"; 
  res=$?; 
done; 
echo "$dir";

然而,我不确定这是否是最有效的。

答案1

您可以指定任何目录mktemp;使用 -p 选项或设置不同的 TMPDIR。

-p temp-dir, --tmpdir=temp-dir
          temp  directory  for  the  file.  This option is a member of the
          tmpdir class of options.

          If this option is not provided, mktemp will use the  environment
          variable  TMPDIR to find a suitable directory.  If these are not
          available, it will fall back to ~/tmp  or  /tmp.   A  <file-pat>
          command line argument containing a directory component will con-
          flict with this option.

例如:

#!/bin/bash
TMPDIR=`pwd`
mktemp

答案2

如果我没有误解您的要求,您想要mktemp /WORKING/DIR/tmp.XXXXXXXXXX或者您想要的名称是这样的(每个名称X都被随机的字母数字字符替换)。

相关内容