アプリケーションがファイルを保存する場合、一般的なモデルでは、ファイルを一時的な場所に保存してから、一時ファイルを最終的な場所に移動します。「移動」が「置換」になる場合もあります。擬似コード:
Save temp file;
if final file exists
delete final file;
move temp file to final filename;
そこには削除が成功する可能性のあるウィンドウがありますが、移動は成功しない可能性があるため、次のような方法で処理できます。
Save temp file;
if final file exists
move final file to parking lot
move temp file to final filename;
if move succeeded
delete previous final file.
else
restore previous final file.
今私の質問に:
一時ファイルを最終ディレクトリに保存するのではなく、一時ファイルを一時ディレクトリに保存してから移動することをお勧めしますか? (もしそうなら、なぜですか?)
最初に一時ディレクトリに保存され、次に別のディレクトリの最終ファイルに移動されたファイルと、最終ディレクトリの一時ファイルに保存されたファイルの属性と権限に違いはありますか?ディレクトリ内で名前が変更されましたか?
両方の答えが YES の場合、最初に一時ディレクトリに保存され、次に最終ディレクトリに移動されたファイルに適切な ACL を取得しながら、どのように優先することができますか?