暗号化されたコンテナまたはファイルシステムで使用するためにmktemp
を改善する最善の方法を考えています。
私が扱っている問題は、可能であれば、シェルスクリプトに作業ディレクトリを含むファイルシステム内に一時ファイルを保存させたいということです。
mktemp
の通常の動作は、環境変数または/tmp
で指定されたルートパスを使用することのようです。ただし、暗号化されたコンテナ内のファイルを操作している場合、これにより、暗号化されていない場所に一時データが定期的にリークされます。
アイデアは、最初に現在のファイルシステムのマウントポイントにtmp
ディレクトリが存在することを確認し、最後の手段として/tmp
onlyを使用することです。どうすればそれを確実に(そして効率的に)実現できますか。
編集
特定のパスのマウントディレクトリを特定するための可能な方法は次のとおりです。
dir=`realpath [path]`;
res=1;
while [ $res -ne 0 ]; do
dir="${dir%/*}";
mountpoint -q "$dir/";
res=$?;
done;
echo "$dir";
しかし、それが最も効率的なものかどうかはわかりません。
任意のディレクトリを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
私があなたの要件を誤解しないのなら、あなたはmktemp /WORKING/DIR/tmp.XXXXXXXXXX
または、名前を次のようにします(すべてのX
はランダムな英数字に置き換えられます)。