我想知道如何最好地改进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
都被随机的字母数字字符替换)。